消息中间件的简介和使用(AMQP)

MQ (message queue)

mq消息队列就是基础队列的中间件

MQ在消息中间件的应用

在一些需要异步调用的服务,和一些不需要遵守强一致性的服务,可以先将服务存入消息队列中,再异步的调用执行

分类

JMS : 适用于java代码的工程 可以传输多种类型的数据
AMQP : 可以适用任何 数据只能是byte[]类型

RabbitMQ(AMQP)

在这里插入图片描述

Route _key

Exchange会根据Route_可以 进行模式匹配

Exchange

exchange 有5种模式 : Direct , Fanout , Topic , Header
Direct : 只会匹配和route_key名字相同的消息队列 (点对点模式)
Fanout : 会发送给所有消息队列 (广播模式)
Toic : 会根据key 和消息队列名称关键字进行模糊匹配
Header : 根据头 效率很低

进行测试

在这里插入图片描述
创建三种交换机 (head不测试) 创建两个消息队列 全部互相绑定
在fanout交换机中发送消息message
在这里插入图片描述所有消息队列都收到了消息
在这里插入图片描述

创建springboot工程 导入rabbitmq依赖

代码中进行测试direct
绑定路由键
在这里插入图片描述
使用springboot01键 使用rabbitTemplate发送消息
在这里插入图片描述

在这里插入图片描述在这里插入图片描述

可以看到springboot01队列收到消息message
使用rabbitTemplate接受消息
在这里插入图片描述可以看到打印出刚刚发送的消息
在这里插入图片描述取到数据后队列会将消息出队
在这里插入图片描述刚才使用converterAndSend方法默认使用java序列化进行传输 若希望使用json进行传输可以更改默认调用的converter
新建一个类 定义一个bean 使用Jackson2JsonMessageConverter

在这里插入图片描述在rabbitmq的自动配置中会自动导入这个bean 不需要额外配置
这次发送一个map数据
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看到消息是json格式 接受的数据也可以反序列化

使用注解监听消息

创建一个service用来监听消息 打开rabbit注解支持

在这里插入图片描述在这里插入图片描述
启动 用测试代码发送消息 可以接受到消息
在这里插入图片描述
传入message可以获得整个message的信息 这次监听springboot02的消息
在这里插入图片描述收到信息
在这里插入图片描述

使用amqpAdmin代码创建交换机和消息队列

在测试类中注入amqpadmin
在这里插入图片描述在这里插入图片描述
运行后再浏览器端口看到绑定成功在这里插入图片描述


版权声明:本文为weixin_42557255原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。