1. simple 模式
simple 模式是最简单最常用的模式
2. work 模式
work 模式有多个消费者
消息产生者将消息放入队列。生产者系统不需知道哪一个任务执行系统在空闲,直接将任务扔到消息队列中,空闲的系统自动争抢。
消费者 A,消费者 B,当然可以更多,同时监听同一个队列,消费者共同争抢当前的消息队列内容,谁先拿到谁负责消费消息。
缺点:高并发情况下,会产生某一个消息被多个消费者共同消费。
应用场景:发红包。
3. publish/subscribe 模式
publish/subscribe 模式 消息被路由投递到多个队列,一个消息被多个消费者获取。
X 代表交换机 rabbitMQ 内部组件,消息产生者将消息放入交换机,交换机发布订阅把消息发送到所有消息队列中。
消费者监听队列,对应消息队列的消费者拿到消息进行消费。
相关场景:邮件群发、群聊天。
4. routing 模式
routing 模式 一个消息被多个消费者获取,并且消息的目标队列可被生产者指定。
生产者将消息发送到交换机并指定路由 key,队列绑定到交换机,并设定好路由规则。消费者从匹配上路由 key 的队列里面获取到推送的消息,即 Exchange 的 direct 类型,和 topic 类型的区别是:topic 可以模糊匹配路由 key 值。
业务场景:统一门户和子系统交互,每个子系统对应不同的业务处理,通过路由 key 分发不同的消息到对应子系统队列,完成消息消费。
5. topic 模式
主题交换机通过对消息的路由键和队列到交换机的绑定模式之间的匹配,将消息路由给一个或多个队列。
我们把消息投递到 topic 交换机的时候一般需要指定一系列由点号连接单词的字符串的 routingKey,同时我们在绑定消息队列和交换机的时候也需要指定一系列由点号连接单词的字符串的 routingKey。
topic 模式,一个消息被多个消费者获取,消息的目标 queue 可用 BindKey 以通配符
* 可以(只能)匹配一个单词
# 可以匹配多个单词(或者零个)
的方式指定。
注意:与路由模式的区别就是路由 key 可以是通配符,模糊匹配。交换机类型为 topic。