我的问题是:
我从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作为交付机制(我使用从队列中获取工作并转发的进程)。我相信这里的其他人已经有了同样的跑步,但我找不到任何关于这方面的博客。
发布于 2018-01-24 06:29:22
我不得不得出结论,在消息级别上这是不可能的。
现在,我已经为每个正在使用的队列创建了一个单独的队列("name.delayed"),在这个队列中,我可以添加带有参数"expiration“= 5000的消息
队列设置本身必须是死信队列,将其路由到队列"name“
https://stackoverflow.com/questions/48372460
复制相似问题