添付の画像に示されているシナリオを検討してください。
- ポータル(プロデューサー)は、複数のアプリケーション(コンシューマー)(PAYROLLAPP、HELPDESKなど)で処理する必要のあるバスにメッセージを送信します。
- コンシューマーアプリケーションの複数のインスタンスが実行されている可能性があります。また、これらのインスタンスは動的に追加/削除できます。
- ここで、アプリケーションごとにメッセージが1回だけ処理されるようにすることが重要です。つまり、PAYROLLAPP -1がメッセージを処理する場合、PAYROLLAPP-2はメッセージを処理しないでください。もちろん、上の図では、HELPDESK –1がそれを処理する必要があります。つまり、複数のインスタンスの場合、メッセージを1回だけ処理する必要があります。
- 私が答えを検索したとき、ほとんどのものは「選択的コンシューマー」(何らかのロジックに基づいてメッセージを受け入れる/拒否するコンシューマー)を作成することでした-に示されているアプリケーションに対して変更/追加/ラッピングを行うことはできないことに注意してください図; ロジックは、バスを管理するプロバイダーのどこかに存在する必要があります
同じことについてご案内ください。
ペッターの答えの後に詳細を追加する:
- 左の点線の左側にある項目は「アプローチ」です-純粋なJMS、ESB、EAI
- 右点線の右側の項目は「実装」です
さて、大部分-クエリ:
- ソリューション(純粋なJMS、ESB、EAI)に関係なく、水平の点線の下の部分(アプリケーション固有のキュー)を実装する必要がありますか?
- 「純粋な」JMS(アクティブMQなど)の代わりにESB(JBoss ESBなど)を使用すると、どのように役立ちますか?ESBは、「javaのみ」(?)であるJMSよりも優れていますか?次のようなスレッドを参照した後でも、「ESBまたはJMS」は非常に混乱しています:JMSとESB-それらはどのように関連していますか?。「JMSは、これらのタイプをネイティブにサポートするESBでより適切に処理される、RESTサービス、ファイルシステム、S / FTP、電子メール、ヘシアン、SOAPなどの統合にはあまり適していません。たとえば、深夜に500MBのCSVファイルをダンプするプロセスがあり、別のシステムでファイルを取得し、CSVを解析してデータベースにインポートする場合、これはESBで簡単に実行できます。 JMSは悪くなります。同様に、複数のバックエンドインスタンスへの負荷分散/フェイルオーバーを伴うRESTサービスの統合は、HTTP/SをネイティブにサポートするESBを使用してより適切に行うことができます。」それは私の混乱を増しただけです!!!
- EAIフレームワーク(Apache Camelなど)の使用法は、純粋なJMSまたはESBアプローチとはまったく異なりますか?はいの場合、長所/短所はどのように、そして何ですか?
- ESBだけでは役に立たないと言われましたが、「ルーティング」ロジックを定義して保存するには、BPM(または他の何か?)を使用する必要があります。これは本当ですか?