RabbitMQ:消费者成为生产者 - 连接关闭错误

时间:2016-12-27 10:30:06

标签: rabbitmq pika

我有以下方案,我在c1,c2,c3 ..消费者(消耗第一个队列 - 任务队列)中运行我的繁重任务

enter image description here

当c1或c2或c3中的任务完成时,它会在回调中创建另一个连接和通道,以产生另一个 cb_q 。 我的消费者生成任务后,我收到“连接已关闭”错误。但是我不关闭我的消费者的连接,但我关闭生产者的连接。对象不同..

问题

  • 我是否应该在Task Consumer Callback中创建另一个连接和频道以生成 cb_q 的任务?

  • 当消费者成为生产者时,最佳做法是什么?

1 个答案:

答案 0 :(得分:0)

我有一个类似的设置,我有一个“工人”,它从一个队列中消耗,处理数据并将结果推送到另一个队列

我目前所有的队列都在同一台机器上,所以我只是重新使用我对该机器的连接/通道,并使用默认交换,只需指定队列名称

因此,为了消耗我的c1 / c2 / c3实例,请致电:

channel.basic_consume(your_callback_function, queue=e1)

要推送到下一个队列,请使用他们调用的相同频道:

channel.basic_publish(exchange='',
                     routing_key=cb_q,
                     properties=pika.BasicProperties(...),
                     body=message
                     )

我没有在不同的机器上玩过需要建立新连接的队列,但希望这会有所帮助,在我的场景中有一个“工人”,因为消费者和生产者都相对简单