amqp客户端未显示RabbitMQ服务器连接被阻止

时间:2019-05-31 19:38:06

标签: node.js rabbitmq amqp node-amqplib

我在docker-compose中运行RabbitMQ图像,如下所示:

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 :(得分:0)

我已经检查了amqplib的documentsource,注册事件回调是接收Blocked Connection Notifications的唯一方法,amqplib连接没有使用某些成员变量来显示阻塞状态。

From offical document,我不确定这是否意味着在连接到已被阻止的服务器时没有通知:

  

如果在解除阻塞连接之前该节点也开始在磁盘空间不足的情况下运行,则不会发送已阻塞的另一个连接

相关问题