RabbitMQ 工作模式

https://blog.csdn.net/wmh1152151276/article/details/90299834
https://www.cnblogs.com/xyfer1018/p/11581511.html
https://zhuanlan.zhihu.com/p/136846912
https://blog.csdn.net/Weixiaohuai/article/details/93494018?utm_medium=distribute.pc_relevant_download.none-task-blog-blogcommendfrombaidu-2.nonecase&depth_1-utm_source=distribute.pc_relevant_download.none-task-blog-blogcommendfrombaidu-2.nonecas

Rabbitmq一般有以下几种工作模式

工作模式

  • 1. 简单队列模式(Simple Queue)
  • 2. 工作队列模式(Work queues)
  • 3. 发布订阅模式Publish/subscribe(fanout)
  • 4. 路由模式Routing(direct)
  • 5. 通配符模式(Topic)
  • 6. Header模式
  • 7. RPC 模式

1. 简单队列模式(Simple Queue)

不用声明交换机,只需要定义一个队列

  • 生产者:指定queue名发送message,默认Exchange会将message转发到该queue
  • 消费者:监听这个队列,,一有消息就可以消费了

2. 工作队列模式(Work queues)

其实和简单队列模式区别在于:

  • 定义多个消费者来消费,一条消息只能被一个消费者进行消费。

工作队列:有轮询分发和公平分发两种模式

  • 轮询分发
    不同消费者即使消费能力不一样,但最终接受到的消息一样多
  • 公平分发
    消费能力高的消费的更多,能者多劳。

公平分发代码实现上要注意:

  • 生产者、消费者指定:channel.basicQos(1);
  • 消费者消费完消息自动发送确认消息hannel.basicAck(envelope.getDeliveryTag(), false);
  • 消费者必须关闭自动应答:autoAck = false;

3. 发布订阅模式(publish/subscribe)

该模式和工作队列的区别在于:

  • 该模式模式需要显示声明fanout交换机。
  • 生产者将消息发送到交换器(Exchange),交换器绑定多个队列,然后将消息转发给绑定的所有队列,每个队列可以有多个消费者监听。

4. 路由模式(routing)

该模式和发布订阅的区别在于:

  • 需要申明direct交换机
  • 队列绑定交换机需要制定一个routingKey
  • 生产者发送消息时需要制定Exchange和routingKey

5. 通配符模式(Topic)

该模式与路由模式的区别在于:

  • 需要声明topic交换机
  • 可以设置带有通配符进行模糊匹配的routingkey

6. Header模式

该模式与topic不同的地方在于:

  • 需要声明header交换机
  • header模式取消routingkey,使用header中的 key/value(键值对)匹配队列。

7. RPC模式

你可能感兴趣的:(RabbitMQ 工作模式)