Лучшая практика RabbitMQ для публикации нечастых сообщений - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть несколько потоков, производящих сообщения, которые публикуют сообщения нечасто (например, короткий пакет сообщений, затем спит в течение 6 часов).Лучше ли начать новое соединение и закрыть его после публикации?Или лучше поддерживать связь через биение?

Что касается потока потребителя.Обработка каждого сообщения занимает не очень много времени (в пределах интервала пульса), но большую часть времени соединение получателя бездействует, поскольку сообщение не публикуется.Я заметил, что очень часто соединение будет разорвано, если оно будет простаивать слишком долго.Это ожидаемое поведение?Я думал, что соединение прерывается только тогда, когда весь поток потребителя блокируется функцией обработки сообщений, работающей в течение длительного времени, так что пульс не может быть получен в течение всего интервала пульса.

1 Ответ

0 голосов
/ 26 ноября 2018

Насколько я знаю, вы можете закрыть соединение с производителем, не беспокоясь ни о чем после того, как ваша отправка будет завершена.

когда вы имеете дело с потребителем, вы должны быть осторожны.RabbitMQ использует соединение для определения жизнедеятельности потребителя.если соединение закрыто или разорвано, кролик посчитает, что этот потребитель отключен или нет.

Другими словами, если вы не включите автоматическое подтверждение (автоматическое подтверждение), пока ваше сообщение обрабатывается, сообщениестатус будет nack, то есть еще не подтвержден.если вы сейчас прервете соединение с потребителем, кролик сочтет этого потребителя мертвым и поместит сообщение в статус = готово, чтобы другие потребители из группы потребителей могли затем забрать это сообщение.

в вашем случае соединение было сброшено, вероятно, указывает на некоторые проблемы, я предлагаю вам включить режим отладки, чтобы просмотреть подробные сообщения отладки от вашего клиента-кролика.Кроме того, вы также можете проверить сервер кролика, там тоже может быть какая-то подсказка.

...