Rabbitmq五种使用方式使用规则

  1. 点对点Rabbitmq五种使用方式使用规则_第1张图片

  2. 工作模式(Task model)Rabbitmq五种使用方式使用规则_第2张图片

  3. 广播模式(直连)fanoutRabbitmq五种使用方式使用规则_第3张图片
    发送消息流程:
    可以有多个消费者
    每个消费者有自己的queue
    每个队列都要绑定到exchange(交换机)
    生产者发送的消息,只能发送到交换机,交换机绝对要发给哪个队列,生产者无法决定
    交换机把消息发送绑定过的所有队列
    队列的消费者都能拿到消息,实现一条消息被多个消费者消费

  4. 路由模式之订阅(direct)Rabbitmq五种使用方式使用规则_第4张图片
    在fanout模式中,会被所有订阅的队列都消费,但是,子啊某些场景下,我们希望不同的队列消费,这是就要用到Direct类型的Exchange
    在direct模型下:
    队列与交换机的绑定,不能是任意绑定了,而是要指定一个RoutingKey(路由key)
    消息的发送方在向Exchange发送消息时,也必须指定消息的RoutingKey
    Exchange不在把消息交给每个绑定的队列,而是根据消息的RoutingKey进行判断,只有队列的RoutingKey与消息的RoutingKey完全一致,才会收到消息

  5. 路由模式之订阅(topic)Rabbitmq五种使用方式使用规则_第5张图片
    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

你可能感兴趣的:(RabbitMQ)