参照: 公式 GlassFish 4.0 docs/javaee-tutorial Java EE 7
まず、destination-type of: topic から始めましょう。GlassFish 4.0 チュートリアルのセクション「<strong> 46.4 高性能でスケーラブルな JMS アプリケーションの記述」:
このセクションでは、JMS API を使用して、大量のメッセージを確実に処理できるアプリケーションを作成する方法について説明します。
サブセクション「<strong> 46.4.2 共有永続サブスクリプションの使用」:
SharedDurableSubscriberExample.java クライアントは、共有永続サブスクリプションの使用方法を示しています。これは、共有永続サブスクリプションが、永続サブスクリプションの利点 (クライアントがアクティブでない場合でもサブスクリプションはアクティブなままである) と共有コンシューマーの利点 (メッセージの負荷を複数のクライアント間で分割できる) をどのように組み合わせるかを示しています。
「<strong> 46.4.2.1 ShareDurableSubscriberExample および Producer クライアントを実行するには」に従ってこの例を実行すると、キューの宛先タイプに関する前の例と同じ効果/機能が得られます。 6.2 To Run the AsynchConsumer and Producer Clients」の5以降を指し、2 つのコンシューマー ターミナル ウィンドウと 1 つのプロデューサー ターミナル ウィンドウを使用してわずかに変更します。
はい、セクション「<strong> 45.2.2.2 Publish/Subscribe Messaging Style」には次のことが記載されています。
JMS API は、コンシューマがアクティブでない間に送信されたメッセージを受信する永続的なサブスクリプションをアプリケーションが作成できるようにすることで、この要件をある程度緩和しています。永続サブスクリプションは、キューの柔軟性と信頼性を提供しますが、クライアントは多くの受信者にメッセージを送信できます。
.. とにかくセクション「<strong> 46.4 高パフォーマンスでスケーラブルな記述..」 の例はキュー スタイルです - コンシューマごとに 1 つのメッセージ:
トピック サブスクリプションに追加された各メッセージは、キューに追加された各メッセージが 1 つのコンシューマーによってのみ受信されるのと同様に、1 つのコンシューマーによってのみ受信されます。
正確な技術的な答えは何ですか: この例では、トピックで Shared-Durable-Consumer を使用することが想定されており、「<strong> High Performance and Scalable JMS Application」と Asynchronous- の使用で言及されている理由コンシューマーがキューに入っていますか?