RabbitMQ / pika-用于多个客户端的单个RPC回调

时间:2019-05-06 10:52:26

标签: python rabbitmq rpc pika

我遵循了官方RabbitMQ site上的示例,然后尝试将其进一步发展。我尝试将相同的RPC逻辑应用于单个服务器和多个客户端。按照这些示例,我现在正在使用BlockingConnection()。每个客户端都循环调用process_data_events()函数,并检查其是否与correlation_id相对应。 所有客户端都在同一callback_queue上检查其关联ID

例如,在2个客户端和1个服务器的设置中,有2个队列。两个客户端都发布到的一个,两个客户端都检查对应的correlation_id的一个。该代码可以完美地在单个客户端和单个服务器(甚至多个服务器)上运行,但是当多个客户端在callback_queue上使用时,该代码将无法正常工作。

我的实验表明,当一个客户(通过process_data_events())收到的ID并非他们的ID时,该ID永远不会被其他客户处理。因此,由于在相当长的时间内未发送心跳,所以发生了超时或连接断开。发生问题之后的函数是channel.basic_consume(queue='callback',on_message_callback=on_resp)

我应该为每个客户端使用唯一的回调队列吗?该文档并没有我希望的那样有用,您有建议我学习的东西吗?

如果您要求我,我可以发布最少的代码来重现该问题。

预先感谢

编辑::此repo包含用于重现此问题的最少代码以及更多详细信息。

0 个答案:

没有答案