如何在Pika中同时运行消费者和发布者?

时间:2016-01-19 21:36:18

标签: python rabbitmq pika

我有一个Python应用程序,我想同时运行一个消费者和一个发布者。基本上,我希望通过Consumer获取消息,然后解析并处理它,然后通过Publisher将其发送回RabbitMQ。

我已经从async consumerasync publisher的官方Pika文档中获取了代码。他们单独工作,但我似乎无法使他们同时工作。在应用程序的起点我有:

import messaging.MQ as MQ

MQ.start_consumer()
MQ.start_publisher()

但是,永远不会达到start_publisher()行。

看起来罪魁祸首就是Consumer

中的这一行
self._connection.ioloop.start()

除了Consumer中定义的asnyc方法之外,在调用该行之后,没有任何内容被执行。

我觉得这很明显,但我似乎无法指责它。

1 个答案:

答案 0 :(得分:0)

这有点尴尬,但我在发布后的10分钟内解决了这个问题。

基本上,您只需要使用线程。可能有一种更简单的方法,但这肯定有效。

按照文档中的示例,例如viewDidLoad,您只需要替换:

Consumer

使用:

class ExampleConsumer(object):

然后你可以简单地运行线程:

import threading

class ExampleConsumer(threading.Thread):

我还调整了publisher = Publisher() consumer = Consumer() publisher.start() consumer.start() 函数并添加了一些__init__捕获,但是在代码示例中试图保持简单。