跳到主要内容

第4章 RabbitMQ的五种工作模式

0.官网介绍

https://www.rabbitmq.com/getstarted.html

1. 简单队列(Simple Queue)

  • 特点:简单队列模式是最基本的消息队列使用模式,涉及一个生产者(Producer)发送消息到队列,一个消费者(Consumer)从队列中获取消息进行处理。
  • 交换机需求:在这种模式下,实际上不需要显式地使用交换机。RabbitMQ为每个队列自动使用了默认的交换机(Default Exchange,也称为无名交换机)。这个默认的交换机是一个直连交换机(Direct Exchange),它允许你直接将消息路由到指定的队列,只要声明队列时指定的Routing Key(路由键)与消息的Routing Key相匹配即可。
  • 使用场景:适用于简单的任务分发,当只需要一个生产者和一个消费者时。

image-20240218192020359.png

image-20240219140314012.png

image-20240219140535670.png

2. 工作队列(Work Queues)

  • 特点:用于分布式的任务处理。一个生产者发送消息到队列,多个消费者监听同一个队列,进行消息的消费。RabbitMQ会按照轮询(Round-robin)的方式将消息分发给不同的消费者,实现负载均衡。
  • 交换机需求:与简单队列类似,工作队列模式也可以利用RabbitMQ的默认交换机来实现。生产者将消息发送到默认交换机,指定消息的Routing Key(路由键),使其与一个或多个工作者的队列匹配,从而实现任务的分发。
  • 使用场景:适用于任务较多且任务处理时间较长的情况,可以通过增加消费者来提高处理速度。

image-20240218192047972.png

3. 发布/订阅(Publish/Subscribe)

  • 特点:引入交换机(Exchange)概念。生产者将消息发送到交换机,而不是直接发送到队列。交换机将消息发送到与之绑定的多个队列,实现一对多的消息分发,每个消费者监听不同的队列。
  • 使用场景:适用于消息广播,当需要将同一消息同时发送给多个消费者时。

image-20240218192248648.png

image-20240219151952317.png

image-20240219152128337.png

4. 路由(Routing)

  • 特点:在发布/订阅的基础上增加路由功能。生产者将消息发送到交换机,并指定一个路由键(Routing key)。交换机根据路由键将消息路由到绑定了匹配路由键的队列。
  • 使用场景:适用于根据特定规则将消息分发到不同的消费者的情况。

image-20240218192455067.png

5. 主题(Topics)

  • 特点:进一步扩展了路由的概念。交换机将消息路由到队列的规则不仅基于路由键的完全匹配,还支持模式匹配(如"*"表示一个词,"#"表示零个或多个词)。支持多个单词列表,以.来分隔。这允许实现更复杂的消息过滤。
  • 使用场景:适用于同时满足多个条件的复杂消息路由需求,如根据消息的来源和类型进行动态路由。

image-20240218192630411.png

更新: 2024-10-04 18:46:32