RabbitMQ
一个由 Erlang 语言开发的AMQP的开源实现
安装rabbit
docker pull rabbitmq:management
先确保已经安装了docker
启动容器
docker run -di --name=rabbitmq -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 15671:15671 -p 15672:15672 -p 25672:25672 rabbitmq:management
安装完后查看容器
docker ps
引入依赖并配置
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
# 配置文件中添加
rabbitmq:
host: 安装rabbitmq的服务器IP
直接模式
需要将消息发给唯一一个节点时,使用这种模式
只经过一个空字符串的交换器
分列模式
主题模式
消息生产者产出消息——>发送到交换器——>通过不同的rountingkey——>绑定不同的队列
一个消息可以发给不同的队列(通过匹配rountingkey)
good.# 可匹配 good.abc good.log
#.log 可匹配 abc.log good.log
good.log 可匹配 good.log
SpringBoot 中的使用
声明该对象
@Autowired
private RabbitTemplate rabbitTemplate;
调用该对象的rabbitTemplate.convertAndSend(路由信息(String),数据对象(Object));
在另一处监听并接收处理消息
@RabbitListener(queues = 路由信息(String))
注解标明这是个rabbitmq监听类,然后在这个类中使用@RabbitHandler
注解表明处理消息的函数
@RabbitHandler
public void executeMsg(数据对象(Object))
{
//业务处理
Object.fun()....
}
注意 路由信息要一致,数据对象类型要一致