是否可以在每条消息级别设置 RMQ 消费者传送超时?

问题描述 投票:0回答:1

我们有一个在 RabbitMQ 作业队列中保存活动作业的用例。客户端在空闲时从该队列中提取作业。很正常。但在我们的例子中,我们不确认作业。我们允许它们保持未确认状态,因此如果客户端死亡,作业将进入预定义的死信队列。然后,我们有一个从死信中提取消息的过程,并决定将消息重新排队回原始作业队列,或丢弃。

这个方法长期以来一直运作良好。现在,我们已经升级到较新版本的 RMQ,并发现我们因 PRECONDITION_FAILED 而断开连接,因为默认的 30 分钟 ack 超时已过期。

除了从服务器中删除它之外,还有人知道在每条消息级别上配置它的方法吗?

有些人可能会说只需 ACK 作业,并在需要时使用处理程序返回 DEADLETTER。好吧,抱歉,这对我们不起作用。

那么,有什么想法吗?

java rabbitmq
1个回答
1
投票

不,目前还没有。您应该将默认值配置为大于最长的预期作业持续时间。请注意,如果您使用仲裁队列,这可能会导致磁盘使用量增长,因为在消息未完成时无法压缩日志文件。

我们可能会以更精细的方式配置此超时,因此请密切关注未来的 RabbitMQ 版本。

© www.soinside.com 2019 - 2024. All rights reserved.