0

我有一个调度程序每分钟向队列发送一些具有相同 ID 的“信号”消息。同时,在 5% 的情况下,消息处理程序可以在 5 秒到 15 分钟的时间范围内使用消息。

在这种情况下,如何实现幂等消息处理,以便忽略从调度程序发送的第二条消息?

我尝试采用消息重复检测,但这种方法效果不佳,因为它仅使用消息发生时间戳(这是正确的假设吗?),即使我们在队列中有具有相同 ID 的消息(甚至可能锁定处理) - 新消息将在重复检测时间窗口关闭后出现。

我也在考虑滑动间隔,以便消息处理程序在处理完消息后重新安排消息本身。但我看到还有其他几个问题使这个解决方案变得不那么容易。

4

1 回答 1

0

这似乎不是重复检测的合适用例。看起来您只是希望进程每分钟唤醒一次并处理它拥有的任何数据?一个尝试的选择可能是,在您完成处理后“排空队列”,因为这会很快发生,您最多只能在一分钟后依靠下一条消息出现?

于 2013-11-06T02:48:23.850 回答