Способ разорвать связь от rabbitmq

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

Я могу обнаружить эту ситуацию, перечислив очереди и количество потребителей на сервере. Есть ли способ уничтожить этого потребителя со стороны сервера?

3 ответа

Решение

Вы можете разорвать соединения с брокером RabbitMQ, используя rabbitmqctl инструмент (см. справочную страницу) или с помощью веб-интерфейса. Вы также можете очистить и удалить очередь, принадлежавшую мошенническому потребителю.

Тем не менее, вы не можете убить сам процесс потребителя, используя эти инструменты. Вы действительно должны сосредоточиться на исправлении ошибок в приложении, чтобы создавалось только правильное количество потребителей.

Потребитель может быть убит rabbitmqctl используя вход close_connection connectionpid

пример

> rabbitmqctl close_connection "<rabbit@hardys-Mac-mini.1.4195.0>" "reason here"

connectionpid может получить

> rabbitmqctl list_consumers

Listing consumers ...
send_email_1    <rabbit@hardys-Mac-mini.1.4185.0>   amq.ctag-oim8CCP2hsioWc-3WwS-qQ true    1   []
send_email_2    <rabbit@hardys-Mac-mini.1.4195.0>   amq.ctag-WxpxDglqZQN2FNShN4g7QA true    1   []

RabbitMQ 3.5.4

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

Другие вопросы по тегам