Потребитель RabbitMQ перестает получать сообщения

У меня серьезная проблема с RabbitMQ. После получения определенного количества сообщений потребители просто перестают получать сообщения. Они все еще подключены, но больше не получают сообщений. Я нашел другие сообщения об этой проблеме, но у них нет рабочего ответа.

Вот оболочка подключения, которую я использую: http://pastebin.com/XVY3HNGq. Я использую stformed-amqp, который представляет собой асинхронную библиотеку amqp для python.

Я пробовал использовать сообщения без подтверждения или с подтверждением и счетчиком предварительной выборки qos, равным 100 (как указано в нескольких ответах на такого рода проблемы).

Когда я выполняю «rabbitmqctl list_queues name messages_ready messages_unacknowledged», у меня есть много готовых сообщений и значение «prefetch count» (100) неподтвержденного сообщения при использовании ack.

Я действительно не знаю, что происходит! Спасибо за ответ.


person maximebf    schedule 18.07.2011    source источник
comment
Вы нашли решение своей проблемы?   -  person Dojo    schedule 04.09.2013
comment
Вы нашли решение своей проблемы? Это довольно старая тема: D   -  person TienLuong    schedule 07.01.2019
comment
После некоторых исследований мы обнаружили, что на стороне потребителя много TCP ZeroWindow отправляется на rabbitmq. Каким-то образом буфер TCP заполнен, и потребитель скажет rabbitmq, что мы не можем обрабатывать другие сообщения. Мы все еще ищем решение, но, по крайней мере, знаем, где искать проблему.   -  person TienLuong    schedule 31.01.2019


Ответы (4)


во время поиска в Google по этой проблеме я обнаружил, что это обсуждение Google очень похоже на вашу проблему.

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

person Lup    schedule 07.04.2014

Глядя на код, я сразу не вижу ничего неправильного. Установка no-ack на True и установка счетчика предварительной выборки на 0 должны работать нормально. Вы уверены, что ваше приложение не разбилось из-за какого-то исключения? Есть ли что-нибудь особенное в моменте, когда он замерзает?

Вы также можете попробовать спросить в списке рассылки RabbitMQ Discuss . Разработчики обычно отвечают на все задаваемые вопросы, и некоторые из них знакомы с клиентами Python AMQP.

person scvalex    schedule 18.07.2011

Готов поспорить, вы используете Ubuntu или Debian и обходитесь старой-старой версией RabbitMQ, которую они включают. У меня были те же проблемы, и все они исчезли, когда я установил RabbitMQ 2.31 или выше с rabbitmq.com.

Просто скажите НЕТ старым пакетам Ubuntu и Debian.

person Michael Dillon    schedule 20.07.2011

Я столкнулся с той же проблемой (но с потребителями Java) и понял, что причина в том, что на сервере rabbitmq закончились файловые дескрипторы (по умолчанию в Ubuntu 1024). Попробуйте увеличить лимит открытых файлов в Linux на машине, на которой работает сервер rabbitmq, для пользователя, который запускает процесс rabbitmq. Способ увеличения этих ограничений описан здесь: http://www.cyberciti.biz/faq/linux-increase-the-maximum-number-of-open-files/

Ваше здоровье

person Radu Cugut    schedule 20.07.2011