一个具有多个路由密钥的交换或RabbitMQ中有效的多个交换
我在我的项目中使用RabbitMQ,我想知道是应该使用具有多个路由密钥的单个交换还是使用多个交换?哪个效率更高 例如,如果我使用带有路由键A、B、C的单个exchange E,消费者连接到该exchange E并使用A、B、C路由键获取数据。另一种选择是,我应该将其发送到exchange A、exchange B、exchange C,而不使用路由密钥,并且消费者可以连接到每个exchange以获取所需的数据 python库pika(我目前正在使用)的一个示例:一个具有多个路由密钥的交换或RabbitMQ中有效的多个交换,rabbitmq,pika,rabbitmq-exchange,Rabbitmq,Pika,Rabbitmq Exchange,我在我的项目中使用RabbitMQ,我想知道是应该使用具有多个路由密钥的单个交换还是使用多个交换?哪个效率更高 例如,如果我使用带有路由键A、B、C的单个exchange E,消费者连接到该exchange E并使用A、B、C路由键获取数据。另一种选择是,我应该将其发送到exchange A、exchange B、exchange C,而不使用路由密钥,并且消费者可以连接到每个exchange以获取所需的数据 python库pika(我目前正在使用)的一个示例: 你可以继续你的第一个方法。将您的
你可以继续你的第一个方法。将您的
交换声明为直接交换。对于直接交换
,它将队列
名称作为路由键
。交换
能够将自身绑定到多个队列。此外,exchange的任务是将消息路由到队列。将多个队列绑定到它不会降低RabbitMQ的效率。您想直接使用绑定到队列A、B、C的方法进行更改吗?为什么不运行基准测试并亲自查看?但我的问题是哪种方法更好?第一个还是第二个?为什么选择一个而不是另一个?
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)