ブローカ レベルである程度のインテリジェンスを備えた膨大な量のメッセージ トラフィックを管理できるパブリッシュ/サブスクライブ分散メッセージング フレームワークを構築しようとしています。これを説明するトポロジがあるかどうかはわかりませんが、これは私が目指しているモデルです。
例のモデル A
A) 実行中のメッセージ ブローカーが 2 つあります (デモを簡単にするために、可能であればすべて localhost で実行するのが理想的です)。
- ブローカー A
- ブローカー B
B) 各ブローカーには 2 つのリスナーと 1 つのパブリッシャーがあります。
例図
[サブスクライバー A1、サブスクライバー A2、パブリッシャー A1] <--> BrokerA <--> BrokerB <--> [パブリッシャー B1、サブスクライバー B1、サブスクライバー B2]
メッセージ X がブローカー A にパブリッシュされ、Broker-B のリスナーに (メッセージ セレクターまたはブローカー ルーティング ルールの基準を介して) そのサブスクライバーが存在しない場合、そのメッセージ X はブローカー B にパブリッシュされません。
それ以外の場合、ブローカー A はブローカー B にメッセージを発行します。そこでは、ブローカー B のリスナー/サブスクライバー/サービスの 1 つがサブスクリプション基準に基づいてそのメッセージを期待しています。
クラスタリングは正しいアプローチですか?
最初に、これをサポートするには「ブローカー クラスタリング」の概念が必要であると結論付けました。ただし、私が理解しているように、クラスタリングの一般的な使用には次のいずれかが伴います。
- すべてのブローカーにわたるメッセージの冗長性 ... または
- 競合する消費者パターン
...そして、これらはどちらも、モデル例 A の要件を満たしていません。
正しいアプローチとは?
私の質問は、私が説明したモデルをサポートする JMS 実装を知っている人はいますか?
検索のために、stackoverflow のすべての投稿タイトル (JMS とクラスター) をスキャンしました。これらの 2 つの有益な投稿を見つけましたが、一見矛盾しているように見えます。
例のモデル A は暗黙的にサポートされている、またはサポートされるべきであると言います: ブローカーの ActiveMQ ネットワークを備えた JMS コンシューマー "これは、ブローカーを選択し、それに接続し、ブローカー ネットワークにそれらの間でそれを整理させることを意味します。理論的には."
サンプル モデル A はサポートされていません: クラスター化されたアプリケーション サーバーの JMS トピック サブスクライバーはどのようにメッセージを受信しますか? 「異なるアプリ サーバーで実行されている PropertiesSubscriber のすべてのインスタンスは、そのメッセージを受け取ります。」
どんな提案でも大歓迎です。
私の投稿を読んでいただき、誠にありがとうございます。
遺伝子