Node.js соединение с RabbitMQ - PullRequest
0 голосов
/ 24 марта 2020

У меня есть приложение node.js, которое использует amqlib для подключения к RabbitMQ. Я пытаюсь воспроизвести ошибку соединения с RabbitMQ, и я получаю две разные ошибки, повторяя один и тот же поток.

То, что я делаю:

  • Запуск контейнера Docker с Управление RabbitMQ.
  • Запустите приложение node.js (либо docker или с npm), которое подключается к RabbitMQ.
  • Go в управлении RabbitMQ и с помощью rabbitmqctl execute stop_app

Этот поток создает каждый раз одно из следующих двух исключений (не знаю, как оно решает каждое из них):

  • OperationalError: connect ECONNREFUSED 172.24.0.3:5672
  • Ошибка: Тайм-аут сердцебиения

Почему это происходит? Кроме того, как лучше всего их обрабатывать?

Это моя функция подключения к разъему, которая, кажется, не покрывает исключение сердцебиения:

  async connect(): Promise<Connection> {
    const conn = await amqp.connect({
      protocol: AMQP_PROTOCOL,
      hostname: RABBITMQ_HOST,
      port: Number(RABBITMQ_PORT),
      username: RABBITMQ_USER,
      password: RABBITMQ_PASS,
      vhost: RABBITMQ_VHOST
    });

    conn.on('error', this.onError);
    conn.on('close', this.onClose);

    logger.debug('Connected to amqp');

    this.conn = conn;
    this.emit('connect', conn);

    return conn;
  }
...