我在我的项目中使用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)
你可以继续第一种方法。宣布您的exchange
为直接交换。在Direct Exchange
的情况下,它需要queue
名称为routing key
。 exchange
能够将自己绑定到多个队列。此外,交换的工作是将消息路由到队列。绑定多个队列不会降低RabbitMQ的效率。