我有一个用于连接 RabbitMQ的node.js
应用程序。amqlib
我正在尝试使用 RabbitMQ 重现连接错误,并且通过重复相同的流程得到两个不同的错误。
我正在做的是:
- 使用 RabbitMQ 管理启动 Docker 容器。
- 启动连接到 RabbitMQ 的 node.js 应用程序(docker 或 npm)。
- 继续 RabbitMQ 管理并
rabbitmqctl
执行stop_app
此流程每次都会产生以下两个异常之一(不确定它如何决定每个异常):
- OperationalError:连接 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;
}