RabbitMQ — Как определить, что очередь потребителей была уничтожена?

#node.js #rabbitmq #amqp

#node.js #rabbitmq #amqp

Вопрос:

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

Я сталкиваюсь с проблемой обнаружения уничтожения очереди на стороне сервера. Например: очередь с именем «a» создана в клиенте Android, и теперь пользователь собирается закрыть приложение, что время очереди уничтожит. но сервер все еще находится в неизвестном состоянии этой очереди. итак, я хочу прослушать любое событие или любой метод для вызова обнаружения, что очередь была уничтожена со стороны клиента.

Спасибо

Ответ №1:

Вы должны использовать уведомление об отмене потребителя.

Если вы используете модуль node-amqp, вам следует установить consumer_cancel_notify значение true и, подписываясь на очередь, проверять basicCancel .

 q.subscribe(function (message, headers, deliveryInfo, messageObject) {
    // Check for basicCancel
});
  

Комментарии:

1. Означает, что я также должен подписаться на очередь со стороны сервера? если клиент создает очередь с именем «a», то серверу также необходимо создать очередь и подписаться на нее?? я использую библиотеку node-amqp. Спасибо

2. @HiteshArtoon Ваш клиент подписывается на созданную им очередь? Это странно. Обычно у вас есть клиент, отправляющий сообщения в очередь, а другой клиент (например, ваш сервер) подписывается на него и получает уведомления.

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