首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >RabbitMQ和延迟消息

RabbitMQ和延迟消息
EN

Stack Overflow用户
提问于 2018-11-12 22:26:08
回答 1查看 452关注 0票数 1

我正在试用RabbitMQ,并遵循以下教程:https://www.cloudamqp.com/blog/2015-05-19-part2-2-rabbitmq-for-beginners_example-and-sample-code-node-js.html

下面是接收消息时的示例:

代码语言:javascript
运行
复制
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分钟?

EN

回答 1

Stack Overflow用户

发布于 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服务器重新启动,消息仍会被发送。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53264217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档