【问题标题】:RabbitMQ: Consumer becomes producer -- connection closed errorRabbitMQ:消费者变成生产者——连接关闭错误
【发布时间】:2016-12-27 10:30:05
【问题描述】:

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

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

问题

  • 我应该在任务消费者回调中创建另一个连接和通道来为 cb_q 生成任务吗?

  • 消费者成为生产者时的最佳实践是什么?

【问题讨论】:

    标签: rabbitmq pika


    【解决方案1】:

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

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

    所以为了使用我的 c1/c2/c3 实例调用:

    channel.basic_consume(your_callback_function, queue=e1)
    

    为了推送到下一个队列,使用他们调用的相同通道:

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

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

    【讨论】:

      猜你喜欢
      • 2013-03-25
      • 1970-01-01
      • 2014-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-03
      • 1970-01-01
      • 2016-03-01
      相关资源
      最近更新 更多