在RabbitMQ中使用多个路由密钥或多个交换机进行一次交换

问题描述 投票:0回答:1

我在我的项目中使用RabbitMQ,并想知道我是否应该使用多个路由密钥的单个交换或使用多个交换?哪个会更有效率?

例如,如果我使用单个交换机E与路由密钥A,B,C和消费者连接到该交换机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)
rabbitmq pika rabbitmq-exchange
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.