我在项目中使用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)
答案 0 :(得分:0)
您可以继续第一种方法。将您的exchange
声明为直接交换。对于Direct Exchange
,它将queue
名称作为routing key
。 exchange
能够将自己绑定到多个队列。同样,交换的工作是将消息路由到队列。绑定多个队列不会降低RabbitMQ的效率。