【问题标题】:Delay message consumption with SelectConnection使用 SelectConnection 延迟消息消费
【发布时间】:2016-07-01 11:53:41
【问题描述】:

我想用 SelectConnection 编写一个消费者。

我们的网络基础设施中有几台设备会在一段时间后关闭连接,因此我想使用心跳功能。

据我所知,IOLoop 在主线程上运行,所以当这个线程处理消息时,心跳帧不能被处理。

我的想法是创建几个处理消息的工作线程,以便主线程可以处理 IOLoop。处理一条消息会占用大量资源,因此一次只能处理一定数量的消息。我不想将剩余的消息存储在客户端,而是将它们留在队列中。

有没有办法在不中断心跳的情况下中断消息的消费?

【问题讨论】:

    标签: python python-2.7 rabbitmq pika


    【解决方案1】:

    我不是 pika 的 SelectConnection 方面的专家,但您可以通过将 Consumer Prefetch (QoS) 设置为所需的进程数来实现这一点。

    这基本上意味着,一旦消息进入,您将其卸载到进程或线程,一旦消息被处理,您就会确认消息已被处理。

    例如,如果您将 QoS 设置为 10。客户端最多会拉取 10 条消息,并且在至少其中一条被确认之前不会拉取任何新消息。

    这里的重要部分是,您只需要在处理完消息后确认消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-28
      • 2018-06-08
      • 1970-01-01
      • 1970-01-01
      • 2023-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多