2013-11-04 18 views
0

我有一个调度程序每分钟向队列发送一些带有相同ID的'signal'消息。在5%的情况下,消息处理程序可以在5秒到15分钟的时间范围内消费消息。如何在基于Azure ServiceBus的解决方案中实现幂等消息处理程序?

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

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

我也在考虑滑动间隔,以便消息处理程序在处理它之后重新计划消息本身。但是我发现其他一些问题使得这个解决方案不那么容易。

回答

0

对于重复检测,这似乎不是合适的用例。看起来你只是想让这个过程每分钟醒来并处理它所拥有的任何数据?一种尝试可能是在完成处理之后“排空队列”,并且因为这会很快发生,那么您可以仅仅依靠下一条消息在一分钟后最多显示出来?

相关问题