前言
这部分知识在面试或者应用场景都是一个值得深思的问题
以此做了这一类文章的总结
RabbitMq官网对此工作模式的诠释
队列模式
共分为以下几种:
简单队列模式、工作队列模式、订阅与发布模式、路由模式、主题模式、PRC模式
1. 简单队列模式
一个生产者
一个队列
一个消费者
(生产者将消息发送到队列,消费者从队列中获取消息)
2. 工作队列模式
一个生产者
一个队列
一个或多个消费者
(跟上面一样,但是一个消息只能被一个消费者消费,而且是随机消费)
3. 订阅与发布模式
一个生产者
一个交换机(没有路由规则)
多个队列
多个消费者
(生产者把消息发送到交换机,交换机发送给队列。队列要绑定交换机)
主要是实现一个消息被多个消费者实现的目的
4. 路由模式
一个生产者
一个交换机(完整匹配的路由规则)
多个队列
多个消费者
(根据路由规则决定消息往哪个队列发送)
5. 主题模式(也可说是通配符模式)
一个生产者
一个交换机(模糊匹配路由规则)
多个队列
多个消费者
(根据模糊查询规则匹配更多的队列数据)
6. PRC模式
一个客户端(消费者)
多个队列
一个服务端(生产者)
客户端启动(创建回调队列),发送两个属性(reply_to,设置为回调队列,correlation_id,设置为每个请求的唯一值。
)
请求发送到队列中
服务端根据请求的队列完成这项工作并发回给客户端
客户端会检查一开始的correlation_id属性。如果它与请求中的值匹配,则将响应返回给应用程序。
总结
生产者只关心交换机和路由规则
消费者只关心队列,因为只与队列交互
- 订阅与发布模式(没有路由规则)
- 路由模式(完全匹配路由规则)
- 主题模式模糊查询路由规则,类似正则表达式)
以上三种都有交换机,只不过不一样的路由规则
实战演练
关于上面模式中的训练
可以参考官网:
RabbitMq的六种队列模式
也可参考网上比较全面的代码讲解
RabbitMQ之六种队列模式