我有以下方案,我在c1,c2,c3 ..消费者(消耗第一个队列 - 任务队列)中运行我的繁重任务
当c1或c2或c3中的任务完成时,它会在回调中创建另一个连接和通道,以产生另一个 cb_q 。 我的消费者生成任务后,我收到“连接已关闭”错误。但是我不关闭我的消费者的连接,但我关闭生产者的连接。对象不同..
问题:
我是否应该在Task Consumer Callback中创建另一个连接和频道以生成 cb_q 的任务?
当消费者成为生产者时,最佳做法是什么?
答案 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
)
我没有在不同的机器上玩过需要建立新连接的队列,但希望这会有所帮助,在我的场景中有一个“工人”,因为消费者和生产者都相对简单