0

同じ ID の「シグナル」メッセージを毎分キューに送信するスケジューラがあります。同時に、メッセージ ハンドラーは、5% のケースで 5 秒から 15 分の時間範囲でメッセージを消費できます。

この場合、スケジューラから送信された 2 番目のメッセージが無視されるように、べき等メッセージ処理を実装するにはどうすればよいでしょうか?

メッセージの重複検出を採用しようとしましたが、メッセージの発生タイムスタンプのみを使用するため (正しい仮定ですか?)、キューに同じ ID のメッセージがある場合でも (おそらくロックされている可能性があります)、このアプローチはうまく機能しません。処理中) - 新しいメッセージは、重複検出時間ウィンドウが閉じられた後に発生します。

メッセージハンドラーがメッセージを処理した後にメッセージ自体を再スケジュールするように、間隔をスライドさせることも考えています。しかし、この解決策をそれほど簡単にできない問題が他にもいくつかあります。

4

1 に答える 1

0

This does not seem an appropriate use case for Duplicate detection. Looks like you just want the process to wake up every minute and process any data it has? One option to try could be that after you are done processing you "drain the Queue" and since that will happen quickly you can then just rely on the next message to show up at most after a minute?

于 2013-11-06T02:48:23.850 に答える