RabbitMQ——工作模式
1、工作队列
-
两个消费端共同消费同一个队列中的消息。对于任务过重或任务较多情况使用工作队列可以提高任务处理的速度。一条消息只会被一个消费者接受;采用轮询的方式将消息平均发送给消费者;消费者在处理完某条消息后才会收到下一条消息。
2、 消息/订阅模式
-
每个消费者监听自己的队列;生产者将消息发送给broker,由交换机将消息转发到绑定此交换机的每个队列,每个绑定交换机的队列都将接收到消息。
3、路由模式(Routing)
-
每个消费者监听自己的队列,设置routingkey;生产者将消息发送给交换机,由交换机根据routingkey来转发消息到指定的队列。
-
Routing模式要求队列在绑定交换机时要指定routingkey,消息会转发到符合routingkey的队列。
4、通配符模式(Topics)
-
每个消费者监听自己的队列,并且设置带通配符的routingkey;生产者将消息发送给broker,由交换机根据routingkey来转发消息到指定的队列。
-
根据用户的通知设置去通知用户,设置接收Email的用户只接收Email,设置接收sms的用户只接收sms,设置两种通知类型都接收的则两种通知都有效。
-
符号#:匹配一个或者多个词,比如inform.#可以匹配inform.sms、inform.email、inform.sms.email等;
-
符号.:只能匹配一个词,比如inform.*可以匹配inform.sms、inform.email。
5、Header模式
- header模式与routing不同的地方在于,header模式取消routingkey,使用header中的 key/value(键值对)匹配队列。
- 根据用户的通知设置去通知用户,设置接收Email的用户只接收Email,设置接收sms的用户只接收sms,设置两种通知类型都接收的则两种通知都有效。
6、RPC模式
- RPC即客户端远程调用服务端的方法 ,使用MQ可以实现RPC的异步调用,基于Direct交换机实现,流程如下:
- 客户端即是生产者就是消费者,向RPC请求队列发送RPC调用消息,同时监听RPC响应队列。
- 服务端监听RPC请求队列的消息,收到消息后执行服务端的方法,得到方法返回的结果。
- 服务端将RPC方法的结果发送到RPC响应队列。
- 客户端(RPC调用方)监听RPC响应队列,接收到RPC调用结果。