【问题标题】:amqp client doesn't show that RabbitMQ server connection is blockedamqp 客户端未显示 RabbitMQ 服务器连接被阻止
【发布时间】:2019-10-17 10:39:54
【问题描述】:

我像这样在 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. 如何在启动客户端时检测到连接已被阻止? IE。服务资源不足,RabbitMA 管理器说连接在连接后立即处于“阻塞”状态。这就是this._connection.on("blocked" 不起作用的原因

【问题讨论】:

    标签: node.js rabbitmq amqp node-amqplib


    【解决方案1】:

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

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

    如果在连接被解除阻塞之前节点也开始磁盘空间不足,则不会发送另一个 connection.blocked

    【讨论】:

      猜你喜欢
      • 2014-12-12
      • 1970-01-01
      • 2013-03-18
      • 2020-06-26
      • 1970-01-01
      • 2013-12-26
      • 2019-03-10
      • 1970-01-01
      相关资源
      最近更新 更多