У меня есть приложение 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;
}