我正在试用RabbitMQ
,并遵循以下教程:https://www.cloudamqp.com/blog/2015-05-19-part2-2-rabbitmq-for-beginners_example-and-sample-code-node-js.html
下面是接收消息时的示例:
function processMsg(msg) {
work(msg, function(ok) {
try {
if (ok)
ch.ack(msg);
else
ch.reject(msg, true);
} catch (e) {
closeOnErr(e);
}
});
}
有没有可能用一个delay
把消息放回队列中,而不是reject
消息--可能需要30分钟?
发布于 2018-11-13 01:11:56
有一个名为RabbitMQ Delayed Message Plugin的RabbitMQ插件。该链接包含一个示例,因为它是来自RabbitMQ的博客文章。
它基本上允许您发布带有标题headers.put("x-delay", 5000);
的消息,这正是您想要的。
但我认为你需要使用一个新的,专门的交换。幸运的是,args.put("x-delayed-type", "direct");
可以是当前任何现有的交换类型(也可以是自定义类型)。
我不建议在服务器端(node-js)这样做,因为除非您将消息存储在数据库中,否则如果服务器重新启动,消息将会丢失。此外,您可能会在等待大量超时的情况下结束。
显然,该插件会持久化消息,因此如果RabbitMQ服务器重新启动,消息仍会被发送。
https://stackoverflow.com/questions/53264217
复制相似问题