結果を「the_output_queue」に書き込むアプリケーションが GlassFish 3.1.2.2 クラスター (2 つのインスタンス) で実行されています。
GlassFish は Message Queue を組み込みのブローカー クラスターとして設定します。これには、2 つの GlassFish インスタンスに直接対応する 2 つのメッセージ ブローカー インスタンスも含まれます。
ここで、the_output_queue からの結果を外部JMS クライアント (Android アプリと考えてください) で使用したいと考えています。
ブローカ クラスタは JMS クライアントから何らかの方法で透過的にアクセスできると想定していましたが、これを機能させることはできません。JMS クライアントを 1 つの個別のブローカーに接続することに成功しただけです。
1 つのJMS クライアントを実行し、1 つのブローカーに接続している場合、メッセージの半分しか取得できません。GlassFish 管理コンソールで定義された物理キュー (the_output_queue) は両方のブローカーに存在し、メッセージは負荷分散のおかげで均等に分散されます。
Oracle マニュアルのこのテキストは、クラスターのすべてのブローカー インスタンスですべてのメッセージが利用可能であるように思えます。
「ホームブローカーは、宛先のすべてのコンシューマーにメッセージをルーティングして配信する責任があります。これらのコンシューマーがローカル (ホームブローカーに接続されている) であるか、リモート (クラスター内の他のブローカーに接続されている) であるかに関係ありません。」
私はこれを完全に誤解していますか?
JMSクライアントはOracle Message Queueブローカ・クラスタに透過的にアクセスできますか? 接続文字列はどのようになりますか?
JMSクライアントが接続できる「グローバル・クラスタ・ターゲット」(個々のブローカではなく)はありますか? クラスターの接続の詳細はどこで確認できますか?
GlassFish のセットアップで確認しなければならない特別なことはありますか? 現在の設定は次のとおりです (jelastic.com によって作成されたデフォルト設定は、私にはよさそうです):
JMS の可用性:
- JMS サービス タイプ: 組み込み
- JMS クラスタ タイプ: 従来型
- JMS 構成ストア タイプ: マスター ブローカー
- JMS メッセージ ストア タイプ: ファイル
GMS が有効になっています