第4章 RabbitMQ的五种工作模式
0.官网介绍
https://www.rabbitmq.com/getstarted.html
1. 简单队列(Simple Queue)
- 特点:简单队列模式是最基本的消息队列使用模式,涉及一个生产者(Producer)发送消息到队列,一个消费者(Consumer)从队列中获取消息进行处理。
- 交换机需求:在这种模式下,实际上不需要显式地使用交换机。RabbitMQ为每个队列自动使用了默认的交换机(Default Exchange,也称为无名交换机)。这个默认的交换机是一个直连交换机(Direct Exchange),它允许你直接将消息路由到指定的队列,只要声明队列时指定的Routing Key(路由键)与消息的Routing Key相匹配即可。
- 使用场景:适用于简单的任务分发,当只需要一个生产者和一个消费者时。
2. 工作队列(Work Queues)
- 特点:用于分布式的任务处理。一个生产者发送消息到队列,多个消费者监听同一个队列,进行消息的消费。RabbitMQ会按照轮询(Round-robin)的方式将消息分发给不同的消费者,实现负载均衡。
- 交换机需求:与简单队列类似,工作队列模式也可以利用RabbitMQ的默认交换机来实现。生产者将消息发送到默认交换机,指定消息的Routing Key(路由键),使其与一个或多个工作者的队列匹配,从而实现任务的分发。
- 使用场景:适用于任务较多且任务处理时间较长的情况,可以通过增加消费者来提高处理速度。
3. 发布/订阅(Publish/Subscribe)
- 特点:引入交换机(Exchange)概念。生产者将消息发送到交换机,而不是直接发送到队列。交换机将消息发送到与之绑定的多个队列,实现一对多的消息分发,每个消费者监听不同的队列。
- 使用场景:适用于消息广播,当需要将同一消息同时发送给多个消费者时。
4. 路由(Routing)
- 特点:在发布/订阅的基础上增加路由功能。生产者将消息发送到交换机,并指定一个路由键(Routing key)。交换机根据路由键将消息路由到绑定了匹配路由键的队列。
- 使用场景:适用于根据特定规则将消息分发到不同的消费者的情况。
5. 主题(Topics)
- 特点:进一步扩展了路由的概念。交换机将消息路由到队列的规则不仅基于路由键的完全匹配,还支持模式匹配(如"*"表示一个词,"#"表示零个或多个词)。支持多个单词列表,以
.
来分隔。这允许实现更复杂的消息过滤。 - 使用场景:适用于同时满足多个条件的复杂消息路由需求,如根据消息的来源和类型进行动态路由。
更新: 2024-10-04 18:46:32