如何使用amqp.node使rabbitmq消息过期

时间:2017-01-09 10:47:14

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

这是我的代码:

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

我做错了什么?

1 个答案:

答案 0 :(得分:1)

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