Skip to main content
 首页 » 编程设计

python之在两个 RabbitMQ 队列中发布消息,而不是一个(使用 py-amqp)

2025年05月04日22findumars

我在使用 py-amqp 时遇到了这个奇怪的问题和 Flopsy模块。我编写了一个将消息发送到 RabbitMQ 服务器的发布者,我希望能够将其发送到指定的队列。在 Flopsy 模块上这是不可能的,所以我对其进行了调整,添加了一个参数和一行来在 Publisher 对象的 _init__ 方法上声明队列

    def __init__(self, routing_key=DEFAULT_ROUTING_KEY, 
                  exchange=DEFAULT_EXCHANGE, connection=None, 
                  delivery_mode=DEFAULT_DELIVERY_MODE, queue=DEFAULT_QUEUE): 
        self.connection = connection or Connection() 
        self.channel = self.connection.connection.channel() 
        self.channel.queue_declare(queue) # ADDED TO SET UP QUEUE 
        self.exchange = exchange 
        self.routing_key = routing_key 
        self.delivery_mode = delivery_mode 

channel 对象是 py-amqplib 库的一部分

我遇到的问题是,即使将消息发送到指定队列,它也会将消息发送到默认队列。在这个系统中,我们希望发送很多消息,我们不想强调系统制作无用的重复...我已经尝试调试代码并进入 py-amqplib 库,但我无法找出任何错误或缺少步骤。此外,我无法在代码之外找到任何形式的 py-amqplib 文档。

关于为什么会发生这种情况以及如何纠正它的任何想法?

请您参考如下方法:

好的,我想我明白了。除非其他人有更好的主意。我检查了this tutorial on AMQP我假设发布者应该知道队列,但事实并非如此,您需要将消息发送到exchange,消费者会声明队列与交换相关。这允许不同的发送和接收选项,如您在教程中所见。

因此,我一直在包含有关发布者和消费者的交换信息,而不是使用对 queue_declare 的调用,它似乎工作正常。