私は現在、非同期処理の割り当てを使用するシステムを開発しています。情報の転送はキューを使用して行われます。したがって、あるプロセスが情報をキューに入れ (そして終了し)、別のプロセスがそれを取得して処理します。私の実装では、多くの課題に直面することになり、これらの問題に対する全員のアプローチに興味があります (アーキテクチャとライブラリの観点から)。
絵を描かせてください。3 つのプロセスがあるとします。
Process A -----> Process B
|
Process C <-----------|
したがって、プロセス Aはメッセージをキューに入れて終了し、プロセス Bはメッセージを取得して処理し、「リターン」キューに入れます。プロセス Cがメッセージを取得して処理します。
- キューからメッセージをリッスンまたは処理しないプロセス Bをどのように処理しますか? Consumer がアクティブでないときに Producer がメッセージを送信できないようにする JMS タイプのメソッドはありますか? したがって、プロセス Aは送信しますが、例外をスローします。
- プロセス Cが X 分以内に応答を取得する必要があるが、プロセス Bが (何らかの理由で) 停止したとします。キューにタイムアウトを強制するメカニズムはありますか? したがって、プロセス Cを開始する X 分以内の返信が保証されます。
これらの問題はすべて、何らかのデッドレターキューを使用して処理できますか? タイマーとチェックを使用して、これをすべて手動で行う必要があります。JMS について言及しましたが、私は何に対してもオープンです。実際、私はキューに Hazelcast を使用しています。
これは、利用可能な Java テクノロジとメソッドに関して、よりアーキテクチャ上の問題であることに注意してください。これは適切な問題だと思います。
どんな提案でも大歓迎です。
ありがとう