2

我使用py-amqpFlopsy模块遇到了这个奇怪的问题。我编写了一个将消息发送到 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

通道对象是 py-amqplib 库的一部分

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

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

4

1 回答 1

0

好吧,我想我明白了。除非其他人有更好的主意。我已经在 AMQP 上查看了本教程,我假设发布者应该知道队列,但事实并非如此,您需要将消息发送到交换,并且消费者将声明队列与交换相关。正如您在教程中看到的那样,这允许发送和接收不同的选项。

所以,我一直在包含发布者和消费者的交换信息,而不是使用调用queue_declare,它似乎工作得很好。

于 2010-04-27T08:52:53.473 回答