1.简单模式
一个生产者对应一个消费者
2.Work queues
Work queues,多个消费者绑定到一个队列,共同消费队列中的消息。
3.Fanout(广播模式)
可以看到,在订阅模型中,多了一个exchange角色,而且过程略有变化。
Exchange:就是交换机,一方面,接收生产者发送的消息。另一方面,知道如何处理消息,例如递交给某个特别队列、递交给所有队列、或是将消息丢弃。到底如何操作,取决于Exchange的类型。Exchange有以下3种类型:Fanout(广播),Direct(路由),Topic(主题)。
在广播模式下,消息发送流程是这样的:
-
1) 可以有多个队列
-
2) 每个队列都要绑定到Exchange(交换机)
-
3) 生产者发送的消息,只能发送到交换机
-
4) 交换机把消息发送给绑定过的所有队列
-
5) 订阅队列的消费者都能拿到消息
4.Direct(路由模式)
在Direct模型下:
-
队列与交换机的绑定,不能是任意绑定了,而是要指定一个
RoutingKey
(路由key) -
消息的发送方在 向 Exchange发送消息时,也必须指定消息的
RoutingKey
。 -
Exchange不再把消息交给每一个绑定的队列,而是根据消息的
Key
进行判断,只有队列的key
与消息的key
完全一致,才会接收到消息
5.Topic(主题模式)
Topic
类型与Direct
相比,都是可以根据Key
把消息路由到不同的队列。只不过Topic
类型可以让队列在绑定key
的时候使用通配符,就像mysql中的like模糊查询一样。
#
:匹配一个或多个词
*
:匹配不多不少恰好1个词