1

前提 -

春の統合では、不完全なメッセージグループを持つアグリゲーターがある場合。グループ リリース戦略が満たされる前に、サーバーが再起動されます。

  • 現在の動作 -> アグリゲーターに投稿されたすべてのメッセージは、新しいメッセージ グループではなく同じメッセージ グループに送られます。完了とマークされていないため、メッセージが流れ続けます。
  • 予期される->サーバーが再起動された場合、アグリゲーターはメッセージストアから残りのメッセージを選択し、すでに保持されているメッセージを完了としてマークし、新しいメッセージに対応します。

私の期待は間違っていますか?誰かがガイドできますか?

4

1 に答える 1

1

で要件を満たすことができると思います。MessageGroupStoreReaperこれは、たとえばキャッチを介して、サーバーの起動時にのみ実行されますContextRefreshedEvent

MessageGroupStore は、これらのコールバックのリストを維持し、必要に応じて、タイムスタンプがパラメーターとして指定された時間より前のすべてのメッセージに適用します (上記の registerMessageGroupExpiryCallback(..) および expireMessageGroups(..) メソッドを参照)。

expireMessageGroups メソッドは、タイムアウト値を指定して呼び出すことができます。現在の時刻からこの値を引いた時間より古いメッセージは期限切れになり、コールバックが適用されます。したがって、メッセージ グループ「有効期限」が何を意味するかを定義するのはストアのユーザーです。

http://docs.spring.io/spring-integration/reference/html/messaging-routing-chapter.html#reaper

于 2016-04-04T18:32:48.013 に答える