rabbitmq-04篇 路由模式

路由模式

Routing 模式又称路由模式,该种模式除了要绑定交换机外,发消息的时候还要指定routing key,队列绑定交换机的时候,需要指定自己的routing key,这样,生产端发送消息的时候也会指定routing key,通过routing key就可以把相应的消息发送到绑定相应routing key的队列中去。

 

  上图是一个结合日志消费级别的配图,在路由模式它会把消息路由到那些 binding key 与 routing key 完全匹配的 Queue 中,此模式也就是 Exchange 模式中的 direct 模式。

  以上图的配置为例,我们以 routingKey="error" 发送消息到 Exchange,则消息会路由到Queue1(amqp.gen-S9b…,这是由RabbitMQ自动生成的Queue名称)和Queue2(amqp.gen-Agl…)。如果我们以 routingKey="info" 或 routingKey="warning" 来发送消息,则消息只会路由到 Queue2。如果我们以其他 routingKey 发送消息,则消息不会路由到这两个 Queue 中。

  相对于发布订阅模式,我们可以看到交换机不再是广播似的转发全部消息,而是有选择性的消费。

  路由模式:

    1、每个消费者监听自己的队列,并且设置routingkey;
    2、生产者将消息发给交换机,由交换机根据routingkey来转发消息到指定的队列;

 

 路由模式总结

    1、两个队列消费者设置的路由不一样,接收到的消息就不一样。路由模式下,决定消息向队列推送的主要取决于路由,而不是交换机了。  

    2、该模式必须设置交换机,且声明路由模式 channel.exchangeDeclare(EXCHANGE_NAME, "direct")

生产者发送消息到交换机,同时定义了一个路由 routingKey,多个消费者声明多个队列,与交换机进行绑定,同时定义路由 routingKey,只有路由 routingKey相同的消费者才能消费数据

posted @ 2021-09-28 17:19  代达罗斯之殇  阅读(77)  评论(0编辑  收藏  举报