首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在RabbitMQ中重新调度特定时间的消息

如何在RabbitMQ中重新调度特定时间的消息
EN

Stack Overflow用户
提问于 2018-01-22 06:41:57
回答 1查看 313关注 0票数 1

我的问题是:

我从RabbitMQ队列中提取了一条消息。我尝试处理这条消息,并意识到它还不能被处理。所以我想把它重新添加到队列中,让它只在+ 5000ms的特定时间返回。不幸的是,这比我想象的更具挑战性。

我尝试过的:

RabbitMQ Dead Letter Attributes ->我这里的问题是,即使手册说默认的交换绑定到每个队列,它也不会根据路由标准转发它。我尝试添加expires = "5000“和x-dead-letter-routing-key = "queuename”以及"x-dead-letter-exchange =“作为默认交换应该可以工作。唯一有效的部分是expires部分。消息将消失并进入黑暗中。这也会发生在死信交换的amq.direct中,包括目标队列上的绑定。

为我打开空白:如果接收者必须是死信队列,那么死信队列就是一个具有扩展功能的基本队列。也不清楚这些参数(x-死信..)仅适用于DLX队列。我想做这个延迟交付持久和纯粹的通过。消息属性,而不是via。队列配置(仅当需要时)。

我在网上搜索过,检查过许多不同的死信信息。我正在尝试构建一个类似微服务的架构,同时使用RabbitMQ作为交付机制(我使用从队列中获取工作并转发的进程)。我相信这里的其他人已经有了同样的跑步,但我找不到任何关于这方面的博客。

EN

回答 1

Stack Overflow用户

发布于 2018-01-24 06:29:22

我不得不得出结论,在消息级别上这是不可能的。

现在,我已经为每个正在使用的队列创建了一个单独的队列("name.delayed"),在这个队列中,我可以添加带有参数"expiration“= 5000的消息

队列设置本身必须是死信队列,将其路由到队列"name“

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

https://stackoverflow.com/questions/48372460

复制
相关文章

相似问题

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