AMQP RabbitMQ错过了已发布的消息

时间:2019-05-05 21:12:18

标签: node.js rabbitmq amqp

在Rabbitmq上使用1:1的send / listen时,该服务会保留尚未被侦听器收听或未确认的消息,以便在侦听器启动时接收到积压并清除。要使它也可以工作还是需要什么配置才能使发布/订阅为1:1(类似于扇出)?

我正在将amqplib用于nodejs

1 个答案:

答案 0 :(得分:0)

  1. Rabbitmq队列应持久

  2. 这可确保在尝试使用队列之前先声明该队列

durable: true
});

**sample code**

var amqp = require('amqplib/callback_api');

amqp.connect('amqp://localhost', function(error0, connection) {
  if (error0) {
    throw error0;
  }
 connection.createChannel(function(error1, channel) {
    if (error1) {
      throw error1;
    }
   var queue = 'task_queue';

   var msg = process.argv.slice(2).join(' ') || "Hello World!";

    channel.assertQueue(queue, {
      durable: true
    });
    channel.sendToQueue(queue, Buffer.from(msg), {
      persistent: true
    });
   console.log(" [x] Sent '%s'", msg);
  });
  setTimeout(function() {
    connection.close();
    process.exit(0)
  }, 500);
});


----------