我正在编写一个需要从两个不同队列中消费的消费者。
1-> 用于实际消息(之前声明的队列)。
2->用于控制消费者行为的命令消息(由消费者动态声明并绑定(bind)到具有特定格式的路由 key 的现有交换(每个消费者运行实例都需要一个)
我正在使用选择连接来异步使用。
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 日志没有显示任何错误,消费者应用程序也没有崩溃。
有谁知道为什么会这样,或者有更好的方法吗?
最佳答案
你看过这里的例子了吗:http://pika.readthedocs.org/en/latest/examples/asynchronous_consumer_example.html ?
还有一些阻塞的例子: http://pika.readthedocs.org/en/latest/examples/blocking_consume.html http://pika.readthedocs.org/en/latest/examples/blocking_consumer_generator.html
阻塞和选择连接比较:http://pika.readthedocs.org/en/latest/examples/comparing_publishing_sync_async.html
pika 0.10.0 预发布版中的阻塞和选择连接速度更快,并且该版本中修复了许多错误。
关于python - 如何使用鼠兔从一个消费者的 2 个 RabbitMQ 队列中异步消费,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32104906/