-
点对点
-
工作模式(Task model)
-
广播模式(直连)fanout
发送消息流程:
可以有多个消费者
每个消费者有自己的queue
每个队列都要绑定到exchange(交换机)
生产者发送的消息,只能发送到交换机,交换机绝对要发给哪个队列,生产者无法决定
交换机把消息发送绑定过的所有队列
队列的消费者都能拿到消息,实现一条消息被多个消费者消费 -
路由模式之订阅(direct)
在fanout模式中,会被所有订阅的队列都消费,但是,子啊某些场景下,我们希望不同的队列消费,这是就要用到Direct类型的Exchange
在direct模型下:
队列与交换机的绑定,不能是任意绑定了,而是要指定一个RoutingKey(路由key)
消息的发送方在向Exchange发送消息时,也必须指定消息的RoutingKey
Exchange不在把消息交给每个绑定的队列,而是根据消息的RoutingKey进行判断,只有队列的RoutingKey与消息的RoutingKey完全一致,才会收到消息 -
路由模式之订阅(topic)
topic类型的Exchange与Direct相比,都是可以根据Routingkey把消息路由到不同的队列,只不过Topic类型的Exchange可以让队列绑定Routing Key的时候使用通配符,这种模型RoutingKey一般都是由一个或多个单词组成,多个单词之间以"."分隔,例如:item.insert
通配符:
*代表匹配一个单词
#代表匹配0个或者多个单词
例如user.# 可以匹配到user.item 也可以匹配到user,也可以匹配度user.item.insert
代码实现在这GitHub里,点击地址
Rabbitmq五种模式及springboot集成Rabbitmq代码实现
https://github.com/lingxi-lyj/rabbitmq