【问题标题】:One exchange with multiple routing keys or multiple exchanges efficient in RabbitMQ在 RabbitMQ 中具有多个路由密钥的一个交换或多个有效的交换
【发布时间】:2019-08-03 18:10:30
【问题描述】:

我在我的项目中使用 RabbitMQ,我想知道我应该使用具有多个路由键的单个交换还是使用多个交换?哪个效率更高?

例如,如果我使用带有路由键 A、B、C 的单个交换 E 并且消费者连接到该交换 E 并使用 A、B、C 路由键获取数据。另一种选择是我应该将它发送到没有路由密钥的交换 A、交换 B、交换 C,并且消费者可以连接到每个交换以获取所需的数据。

python 库 pika 的示例(我目前正在使用):

channel.basic_publish(exchange='E',
                      routing_key='A',
                      body=data)  
channel.basic_publish(exchange='E',
                      routing_key='B',
                      body=data)  
channel.basic_publish(exchange='E',
                      routing_key='C',
                      body=data)

OR

channel.basic_publish(exchange='A',
                      routing_key='',
                      body=data)  
channel.basic_publish(exchange='B',
                      routing_key='',
                      body=data)  
channel.basic_publish(exchange='C',
                      routing_key='',
                      body=data)

【问题讨论】:

  • 您想直接交换并绑定到队列 A、B、C?
  • 为什么不运行基准测试并亲自查看?

标签: rabbitmq pika rabbitmq-exchange


【解决方案1】:

您可以继续您的第一种方法。将您的 exchange 声明为直接交换。对于Direct Exchange,它将queue 名称作为routing keyexchange 能够将自己绑定到多个队列。此外,交换的工作是将消息路由到队列。绑定多个队列不会降低 RabbitMQ 的效率。

【讨论】:

  • 但我的问题是哪种方法会更好?第一个或第二个,为什么更喜欢一个?
猜你喜欢
  • 2014-01-21
  • 2019-07-03
  • 2013-03-07
  • 2012-06-30
  • 2017-10-08
  • 2020-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多