【发布时间】: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