Rabbit MQ amqplib错误“没有剩余分配通道”

时间:2018-07-14 07:02:51

标签: node.js rabbitmq

在pub子模式下工作了兔子mq工人一段时间后,我在创建频道时遇到错误。

Error: No channels left to allocate

2 个答案:

答案 0 :(得分:1)

如果您使用 https://www.npmjs.com/package/amqplib, 您可以在发布多条消息的同时使用 Promise 共享一个频道

message-queue.js

const q = 'tasks';

const open = require('amqplib').connect('amqp://localhost');

const channelPromise = open.then((conn) => conn.createChannel());

// Publisher
function publishMessage(message) {
  channelPromise.then((ch) => ch.assertQueue(q)
    .then((ok) => ch.sendToQueue(q, Buffer.from(message))))
    .catch(console.warn);
}

// Consumer
open.then((conn) => conn.createChannel())
  .then((ch) => ch.assertQueue(q).then((ok) => ch.consume(q, (msg) => {
    if (msg !== null) {
      console.log(msg.content.toString());
      ch.ack(msg);
    }
  }))).catch(console.warn);

module.exports = {
  publishMessage,
};

some-where.js

messageQueue.publishMessage('hello world')

答案 1 :(得分:0)

您可以分配的最大通道数与Rabbitmp服务器协商。在我的服务器中,该值为2047。您可以调试amqplib / lib / connection.js来获取它。

enter image description here