RabbitMQ 中具有多个路由键的一个交换或多个高效交换

Tus*_*eth 5 rabbitmq pika rabbitmq-exchange

我在项目中使用 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)
Run Code Online (Sandbox Code Playgroud)

bum*_*bee 0

你可以继续你的第一种方法。声明您exchange为直接交易所。在 a 的情况下Direct Exchange,它将queue名称作为routing key。Anexchange能够将自身绑定到多个队列。此外,交换器的工作是将消息路由到队列。绑定多个队列不会降低RabbitMQ的效率。