Как остановить использование RabbitMQ с помощью клиентов Java и Python?

Вопрос:У меня есть как клиенты Java, так и Python, которые я использую channel.basicConsume(). В какой-то момент я хотел бы остановить этих потребителей, не останавливая всю программу. В Python с Pika я разместил вызовы channel.stop_consuming(), но они генерируют ошибки, которые я игнорирую. Кажется, работает В Java я не уверен, как это сделать, поскольку stop_consume() не представляется

Вопрос:

У меня есть как клиенты Java, так и Python, которые я использую channel.basicConsume(). В какой-то момент я хотел бы остановить этих потребителей, не останавливая всю программу.

В Python с Pika я разместил вызовы channel.stop_consuming(), но они генерируют ошибки, которые я игнорирую. Кажется, работает

В Java я не уверен, как это сделать, поскольку stop_consume() не представляется доступным.

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

Каков наилучший способ сделать это?

Ответ №1

Счетная часть basic_consume равна basic_cancel. basic_cancel запускает предоставленную функцию обратного вызова on_basic_cancel_ok, когда rabbitmq выполнил отмену. Будьте готовы к короткому периоду, когда вы все равно можете получать сообщения.

см. Pika Channel

Ответ №2

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

Thread t = new Thread(){ public void run(){ //consumer is in here } }; t.start(); // somewhere else later t.interrupt();

Возможно, вам понадобится сделать Thread t доступным в другом месте купить, имея его как поле объекта, а не локальную переменную

Оцените статью
Добавить комментарий