Клиент amqp не показывает, что соединение с сервером RabbitMQ заблокировано - PullRequest
0 голосов
/ 31 мая 2019

Я запускаю образ RabbitMQ в docker-compose, как это:

version: '2.2'

services:
  rabbitmq:
    networks:
      - private
    image: rabbitmq:3.8.0-beta.3-management
    ports: 
      - 15672:15672

Затем подключаюсь через другое приложение Node.js, как это:

const amqp = require('amqplib');

this._connection = await amqp.connect(xxxxxx);
console.log(this._connection.blocked);

this._connection.on("blocked", (reason) => {
    console.log("!!!! connection blocked");
});

Работает нормально, но мало вопросов:

  1. Почему console.log(this._connection.blocked); выводит undefined;
  2. Как определить, что соединение уже заблокировано при запуске клиента?Т.е. у службы нет ресурсов, и менеджер RabbitMA говорит, что соединение находится в состоянии «блокировки» сразу после подключения.Вот почему this._connection.on("blocked" не работает

enter image description here

1 Ответ

0 голосов
/ 01 июня 2019

Я проверил документ и источник amqplib, обратный вызов события регистрации - единственный способ получить Blocked Connection Notifications, соединение amqplib не использовало некоторую переменную-член для отображения блокировкиstate.

Из официального документа , я не уверен, означает ли это, что при подключении к уже заблокированному серверу нет уведомлений:

Если доСоединения разблокированы, узел также начинает исчерпывать пространство на диске, другое заблокированное соединение не будет отправлено

...