RabbitMQ 的工作模式简介
-
1.Work queues
一个生产者(Producer) 对应多个消费者(Consumer) ,多个消费者使用同一个队列接收消息
工作队列模式:
1.一条消息只会被一个消费者消费
2.rabbit采用轮询的方式将消息平均发给消费者
3.消费者在处理完消息后,才会收到下一条消息
-
2.Publish/subscribe
发布订阅模式:
1.每个消费者监听自己的队列
2.生产者将消息发送给borker,由交换机将消息转发到绑定交换机的每个队列,每个绑定交换机的队列都将接收到消息
3.实际应用中,一个队列可以对应多个消费者,也就实现了Work queues 模式
-
3.Routing
路由模式:
1.每个消费者监听自己的队列,并且设置routingkey值
2.生产者发送消息给交换机,由交换机根据routingkey的值将消息发送指定的队列
3.从上图看,我们将routingkey的值都设置为error,路由模式也就实现了Publish/subscribe模式的功能
-
4.Topics
通配符模式:
1.和路由模式相似,只是将路由模式中的routingkey改为统配符,使匹配更加灵活;
2. 两种通配符 : *和# 每个词中间用.(点)隔开
* 只能匹配一个词,比如: aaa.* 可以匹配 aaa.bbb aaa.ccc
# 可以匹配一个或多个词;比如: aaa.# 可以匹配 aaa.bbb aaa.ccc aaa.bbb.ccc
-
5.Header模式
header模式和routing模式的区别在于,header模式取消了routingkey,使用key/value键值对的形式来匹配队列,实际操作中采用Map集合传入参数
-
6.RPC
RPC模式是客服端远程调用服务端的方法,使用MQ可以实现RPC的异步调用,其基于Direct交换机实现,
实现流程:
1.客户端即使生产者也是消费者,向RPC请求队列发送RPC调用消息,同时监听RPC响应队列
2.服务端监听RPC请求队列,收到消息后执行RPC调用方法,得到返回结果
3.服务端将RPC方法的响应结果发送给RPC响应队列
4.客户端收到RPC响应队列中的结果