我有一个调度程序每分钟向队列发送一些具有相同 ID 的“信号”消息。同时,在 5% 的情况下,消息处理程序可以在 5 秒到 15 分钟的时间范围内使用消息。
在这种情况下,如何实现幂等消息处理,以便忽略从调度程序发送的第二条消息?
我尝试采用消息重复检测,但这种方法效果不佳,因为它仅使用消息发生时间戳(这是正确的假设吗?),即使我们在队列中有具有相同 ID 的消息(甚至可能锁定处理) - 新消息将在重复检测时间窗口关闭后出现。
我也在考虑滑动间隔,以便消息处理程序在处理完消息后重新安排消息本身。但我看到还有其他几个问题使这个解决方案变得不那么容易。