【问题标题】:Posting messages in two RabbitMQ queue, instead of one (using py-amqp)在两个 RabbitMQ 队列中发布消息,而不是一个(使用 py-amqp)
【发布时间】:2011-02-12 18:16:02
【问题描述】:

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

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

【问题讨论】:

    标签: python amqp py-amqplib flopsy


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多