当前位置:   article > 正文

RabbitMQ--交换器类型/队列模式--使用/教程/详解_rabbitmq交换机和队列

rabbitmq交换机和队列

原文网址:RabbitMQ--交换器类型/队列模式--使用/教程/详解_IT利刃出鞘的博客-CSDN博客

简介

本文介绍RabbitMQ的交换器类型和队列模式。

本内容也是Java后端面试常见的问题。

RoutingKey与BindingKey

RoutingKey

RoutingKey:路由键。生产者将消息发给交换器的时候,一般会指定一个RoutingKey用来指明这个消息的路由规则,这个RoutingKey需要与交换器类型和绑定键(BindingKey)联合使用才能最终生效。

在交换器类型和绑定键(BindingKey)固定的情况下,生产者可以在发送消息给交换器时,通过指定RoutingKey来决定消息流向哪里。

BindingKey

Binding:绑定。RabbitMQ中通过绑定将交换器与队列关联起来,在绑定的时候一般会指定一个绑定键(BindingKey),这样RabbitMQ就知道如何正确地将消息路由到队列了。

生产者将消息发送给交换器时,需要一个RoutingKey,当BindingKey和RoutingKey相匹配时,消息会被路由到对应的队列中。在绑定多个队列到同一个交换器的时候,这些绑定允许使用相同的BindingKey。

BindingKey并不是在所有的情况下都生效,它依赖于交换器类型,比如fanout类型的交换器就会无视BindingKey,而是将消息路由到所有绑定到该交换器的队列中。

BindingKey其实也属于路由键中的一种,官方解释为:the routing key to use fot the binding。可以翻译为:在绑定的时候使用的路由键。大多数时候,包括官方文档和RabbitMQ Java API中都把BindingKey和RoutingKey看作RoutingKey,为了避免混淆,可以这么理解:

  • 在使用绑定的时候,其中需要的路由键是BindingKey。
    • 涉及的客户端方法为:channel.exchangeBind、channel.queueBind
    • 对应的AMQP命令为:Exchange.Bind、Queue.Bind。
  • 在发送消息的时候,其中需要的路由键是RoutingKey。
    • 涉及的客户端方法为:channel.basicPublish
    • 对应的AMQP命令为:Basic.Publish。

大多数情况下习惯性地将BindingKey写成RoutingKey,尤其是在使用direct类型的交换器的时候。

上边只是部分内容,为便于维护,本文已迁移到此地址:RabbitMQ的交换器类型与队列模式 - 自学精灵

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/598171
推荐阅读
相关标签
  

闽ICP备14008679号