【问题标题】:how to Asynchronously consume from 2 RabbitMQ queues from one consumer using pika如何使用 pika 从一个消费者的 2 个 RabbitMQ 队列中异步消费
【发布时间】:2015-08-19 20:19:02
【问题描述】:

我正在编写一个需要从两个不同队列消费的消费者。

1-> 用于实际消息(事先声明的队列)。

2-> 用于控制消费者行为的命令消息(由消费者动态声明并使用特定格式的路由键绑定到现有交换(每个消费者运行实例需要一个))

我正在使用选择连接来异步消费。

    self.channel.basic_qos(prefetch_count = self.prefetch_count)
    log.info("Establishing channel with the Queue: "+self.commandQueue)
    print "declaring command queue"
    self.channel.queue_declare(queue=self.commandQueue,
                                durable = True,
                                exclusive=False,
                                auto_delete=True,
                                callback = self.on_command_queue_declared)

队列未被声明或回调未被调用。

另一方面,来自实际消息队列的消息没有被消耗,因为我添加了这段代码。

Pika 日志不会显示任何错误,消费者应用程序也不会崩溃。

有人知道为什么会这样吗,或者有更好的方法吗?

【问题讨论】:

  • 我什至尝试将一个已经存在的队列用于命令队列。并在两个队列上执行了 basic_consume,但两个队列都没有被消耗。
  • 是否需要将不同队列的消息消费到不同的函数中,或者不同队列的消息可以调用同一个函数?
  • 在不同的回调方法中消费会很理想。但你可以让它使用同样的方法,这也很棒。

标签: python rabbitmq pika


【解决方案1】:

【讨论】:

  • 是的,我做到了。我的消费者看起来与同步消费者示例非常相似。从单个队列消费时它工作正常。但问题是我的消费者需要从多个队列中消费。有没有这样的例子?
  • 更正:我的消费者看起来与异步消费者示例非常相似
  • 请发布一个完整的代码示例来演示您的问题。这将使社区更容易为您提供帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-13
相关资源
最近更新 更多