【问题标题】:RabbitMQ consumer stops receiving messagesRabbitMQ 消费者停止接收消息
【发布时间】:2011-07-18 12:34:59
【问题描述】:

我对 RabbitMQ 有一个严重的问题。在收到一定数量的消息后,消费者只是停止接收消息。他们仍然连接,但不再接收消息。我找到了关于这个问题的其他帖子,但没有一个有效的答案。

这是我使用的连接包装器:http://pastebin.com/XVY3HNGq。 我使用stormed-amqp,它是python的异步amqp库。

我尝试过使用不带 ack 或带 ack 且 qos 预取计数为 100 的消息(如对此类问题的多个响应所示)。

当我执行“rabbitmqctl list_queues name messages_ready messages_unacknowledged”时,我有很多就绪消息和使用 ack 时未确认消息的“预取计数”(100)值。

我真的不知道发生了什么! 谢谢你的回答。

【问题讨论】:

  • 您找到解决问题的方法了吗?
  • 您找到解决问题的方法了吗?这个话题很老了:D
  • 经过一番研究,我们发现在消费者端有很多TCP ZeroWindow发送到rabbitmq。不知何故,TCP 缓冲区已满,消费者会告诉 rabbitmq 我们无法处理任何其他消息。我们仍在寻找解决方案,但至少我们知道哪里有问题。

标签: python rabbitmq amqp


【解决方案1】:

在谷歌搜索这个问题时,我发现这个谷歌讨论听起来很像你的问题。

https://groups.google.com/forum/#!topic/rabbitmq-discuss/DyJvFDnaVJ4

【讨论】:

    【解决方案2】:

    查看代码,我无法立即发现任何错误。将 no-ack 设置为 True 并将预取计数设置为 0 应该可以正常工作。您确定您的应用程序没有因为某些异常而崩溃吗?结冰的那一刻有什么特别的吗?

    您可能还想尝试在RabbitMQ Discuss 邮件列表中提问。开发人员通常会回答所有提出的问题,其中一些人熟悉 Python AMQP 客户端。

    【讨论】:

      【解决方案3】:

      我敢打赌,您使用的是 Ubuntu 或 Debian,并且可以使用它们包含的旧版本的 RabbitMQ。我有同样的问题,当我从 rabbitmq.com 安装 RabbitMQ 2.31 或更高版本时,它们都消失了。

      对旧的 Ubuntu 和 Debian 软件包说不。

      【讨论】:

        【解决方案4】:

        我遇到了同样的问题(但对于 Java 消费者)并意识到原因是 rabbitmq 服务器用完了文件描述符(Ubuntu 默认有 1024)。 尝试在运行 rabbitmq 服务器的机器上为运行 rabbitmq 进程的用户增加 linux 中的打开文件限制。此处描述了增加这些限制的方法:http://www.cyberciti.biz/faq/linux-increase-the-maximum-number-of-open-files/

        干杯

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-07-31
          • 1970-01-01
          • 2017-09-23
          • 1970-01-01
          • 2023-03-24
          • 2012-05-08
          • 1970-01-01
          相关资源
          最近更新 更多