みなさん、こんにちは。
特定のオブジェクトが変更されるたびに、別のシステム (ターゲット) に非同期的に通知する必要があるシステム (ソース) があります。ねじれは、ソース システムが単一のオブジェクトを短い間隔で何度も変更する可能性があることです (更新は非常に「バースト的」です)。その場合、ターゲット システムに 1 回だけ通知し、最終状態を物体。
私が考えたのは、ThreadPoolExecutor の前にある種の遅延型重複排除キューを使用することでした。このキューは次のようになります。
最小限の時間、アイテムをキューに保持します (理想的には、突然変異の典型的なバーストの期間よりもわずかに長くなるように構成されます)。
(オブジェクトの識別子によって定義された) 重複がキューに入れられた場合に、既存のオブジェクトを置き換えます。ただし、アイテムはキュー内の元の位置を保持する必要があります (1 つのアイテムがキューの最後に永続的に押し付けられるのを避けるため、別のアイテムが一時的に発生する場合でも、ある時点で通知を送信する必要があります)。
java.util でこれとまったく同じものを見たことがなく、この領域での私の google-fu は特に弱いようです。
誰かがこれを以前に実装したことがありますか、このように動作する BlockingQueue 実装を知っていますか、または実装方法についてのヒントがありますか?
前もって感謝します!
ピーター
PS。ESB がこの種のことを行うことは知っていますが、この場合、それは重すぎるアプローチです。理想的には、ソース システムに新しいライブラリの依存関係をまったく追加したくないのです。