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

时间:2010-04-27 08:10:46

标签: python amqp py-amqplib flopsy

我使用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

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

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

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

1 个答案:

答案 0 :(得分:0)

好吧,我认为我已经得到了它。除非其他人有更好的主意。我检查this tutorial on AMQP我假设发布商应该知道队列,但事实并非如此,您需要将消息发送到交换,消费者会声明队列与交换有关。这可以在发送和接收上提供不同的选项,正如您在教程中看到的那样。

所以,我一直在向发布商和消费者提供交换信息,而不是使用queue_declare的电话,而且看起来工作正常。