繁体   English   中英

通过多重处理实现多个消费者Rabbitmq

[英]Multiple consumer Rabbitmq through multiprocessing

python新手。 我正在尝试为RabbitMQ客户端创建多个使用者。 我正在使用PIKA并尝试进行多处理。 似乎正在连接但无法维持循环。 你能帮忙吗? 代码的一部分还应注意通过回调的writer选项。

它应该开始循环并应该始终消耗

 import multiprocessing import time import pika # this is the writer part def callback(ch, method, properties, body): print (" [x] %r received %r" % (multiprocessing.current_process(), body,)) time.sleep(body.count('.')) # print " [x] Done" ch.basic_ack(delivery_tag=method.delivery_tag) def consume(): credentials = pika.PlainCredentials(userid, password) parameters = pika.ConnectionParameters(url, port, '/', credentials) connection = pika.BlockingConnection( parameters=parameters) channel = connection.channel() channel.queue_declare(queue='queuename', durable=True) channel.basic_consume('queuename',callback) print (' [*] Waiting for messages. To exit press CTRL+C') channel.start_consuming() userid = "user" password = "pwd" url = "localhost" port = 5672 if __name__ == "__main__": workers = 5 pool = multiprocessing.Pool(processes=workers) for i in range(0, workers): pool.apply_async(consume) #Stay alive try: while True: 

您没有在子流程中执行任何异常处理,因此我猜测是抛出了意外的异常。 使用Pika 1.1.0和Python 3.7.3, 此代码在我的环境中可以正常工作。

在检查body.count()TypeError之前,将抛出TypeError ,因为在这种情况下body不是str

请注意,根据这些文档 ,我正在使用正确的方法来等待子流程。


注意: RabbitMQ团队监视rabbitmq-users 邮件列表 ,仅在某些情况下回答关于StackOverflow的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM