Остановить прослушивание очереди RabbitMQ с использованием Java

1

Привет, я использую rabbitMQ в своем приложении java. Когда я останавливаю приложение, я должен убедиться, что остановите прослушиватель очереди (прекратите получать сообщения из очереди), прежде чем остановить приложение. Я не уверен, нужно ли мне звонить channel.close() или channel.basicCancel("tag"). Для остановки прослушивания очереди был записан следующий код.

if(myContext.myChannel.isOpen()){ 

  //myChannel is the one I am using to listen to queue 
  myContext.myChannel.basicCancel("OP"); 

  //myContext.myChannel.close(); 
}else{ 
   return ok("Channel is not open"); 
}
  • 0
    Покажите код, если вам нужна помощь. Прочтите руководство.
  • 0
    при остановке приложения я if(myContext.myChannel.isOpen()){ //myChannel is the one I am using to listen to queue myContext.myChannel.basicCancel("OP"); //myContext.myChannel.close(); }else{ return ok("Channel is not open"); } приведенный ниже код if(myContext.myChannel.isOpen()){ //myChannel is the one I am using to listen to queue myContext.myChannel.basicCancel("OP"); //myContext.myChannel.close(); }else{ return ok("Channel is not open"); }
Теги:
rabbitmq
message-queue

1 ответ

4
Лучший ответ

Если вы хотите прослушивать прослушивание, вам необходимо:

 Connection connection = factory.newConnection();
 Channel channel = connection.createChannel();
 channel.queueDeclare("myQueue", false, false, false, null);
 MyConsumer consumer = new MyConsumer(channel);
 String consumerTag = channel.basicConsume("myQueue", false, consumer);
 System.out.println("press any key to terminate");
 System.in.read();

 channel.basicCancel(consumerTag);<----- this stop listening
 channel.close(); <--- this close the channel and eventually all listening
 connection.close();<-- this close the connection and all channels 

Пожалуйста, прочитайте об "isOpen" методе "isOpen": https://www.rabbitmq.com/api-guide.html

Использование метода isOpen() для каналов и объектов соединения не рекомендуется для производственного кода, так как значение, возвращаемое методом, зависит от существования причины выключения.

  • 0
    Спасибо. BasicCancel («тег») работал с моим делом. Мне удалось остановить прослушивание очереди, прежде чем остановить приложение.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню