Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
一个具有多个路由密钥的交换或RabbitMQ中有效的多个交换_Rabbitmq_Pika_Rabbitmq Exchange - Fatal编程技术网

一个具有多个路由密钥的交换或RabbitMQ中有效的多个交换

一个具有多个路由密钥的交换或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(我目前正在使用)的一个示例: 你可以继续你的第一个方法。将您的

我在我的项目中使用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)