【问题标题】:How to expire rabbitmq message using amqp.node如何使用 amqp.node 使 rabbitmq 消息过期
【发布时间】:2017-01-09 10:47:13
【问题描述】:

这是我的代码:

const amqp = require('amqplib');

amqp.connect().then((conn) => {
  var ok = conn.createChannel();
  ok = ok.then((ch) => {
    ch.assertQueue('myFirstQueue', {
       arguments: {
         messageTtl: 1000
       }
     })
     .then(response => {
       let q = response;
       let msg = 'hello';
       let message = new Buffer(JSON.stringify(msg).toString('base64'));
       ch.sendToQueue(q.queue, message);
       return ok;
     })
     .catch(error => {
       return error;
     })
  });
});

我期望消息在一秒钟内过期。当我在几秒钟内运行我的消费者时,消息就会到达!

阅读documentation,我了解到我只需在选项中添加参数并在毫秒内传递messageTtl

我做错了什么?

【问题讨论】:

  • 您的队列是否已经存在?如果是,assertQueue 只会得到那个,而不是创建一个新的,然后你的 ttl 就不会被设置。
  • 队列已经存在,在您发表评论后,我尝试创建一个新队列ch.assertQueue('newQueueNeverUsed'),并且行为相同。还有另一种方法吗?
  • 不确定,我没有使用这个lib,而是直接使用rabbit.js。

标签: javascript node.js rabbitmq ttl node-amqp


【解决方案1】:

您必须在参数中将其作为“x-message-ttl”传递。否则,您可以在选项中传递“messageTtl”。 您可以在他们的 github 库中查看它。 https://github.com/squaremo/amqp.node/blob/master/lib/api_args.js

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-30
    • 2017-02-12
    • 1970-01-01
    • 1970-01-01
    • 2015-08-10
    • 1970-01-01
    相关资源
    最近更新 更多