キューとトピックの主な違いは、キューがポイント・トゥ・ポイントのメッセージ領域で使用されるメッセージ指向のミドルウェアであるのに対し、トピックはパブリッシャー・サブスクライバのメッセージ領域で使用されるメッセージ指向のミドルウェアである点です。
Java Message Service (JMS) は、Sun Microsystems社のアプリケーション・プログラム・インターフェース (API) で、ネットワーク上のコンピュータ間でメッセージングと呼ばれる正式な通信をサポートするものです。
つまり、分散アプリケーションの様々なコンポーネント間で信頼性の高い通信を確立するのに役立つ。
さらに、JMSにはポイントツーポイントとパブリッシャーサブスクライバーという2つのメッセージングドメインまたはモデルがあります。
キューとは
Point to Point モデルでは、送信者は受信者にメッセージを送信する。
送信者はメッセージをキューに格納し、受信者はキューからメッセージを読み出す。
受信者がメッセージを読むまで、メッセージを保持する。
キューはポイント・トゥ・ポイントのメッセージング領域におけるメッセージ指向のミドルウェアとして機能する。
このモデルでは、送信者はメッセージの宛先について知っている。
つまり、メッセージの行き先を知っている。
Point to Point モデルでは、特定のタイミングを要求されることはない。
したがって、送信者はいつでもメッセージを送信することができる。
同様に、受信者はいつでもメッセージを読むことができる。
待ち行列のもう一つの利点は、受信者と送信者の同一性を確認できることである。
このモデルでは、受信者は送信者に通知することができる。
したがって、送信者は受信者がメッセージを正常に取得したことを知ることができる。
トピックとは
publisher or subscriber モデルでは、publisher がメッセージを投稿または公開すると、subscriber はそれを読むことができます。
ブロードキャストと似ています。
つまり、複数の購読者が存在するのです。
トピックは、メッセージを保持し、配信する役割を担っています。
さらに、このモデルでは、サブスクライバーがメッセージを取得するためには、パブリッシャーがアクティブでなければならない。
もしそうでなければ、メッセージを再割り当てする可能性がある。
さらに、確認応答もありません。
したがって、パブリッシャーはサブスクライバーを一人も持た ないということになりかねない。
キューとトピックの違い
定義
キューは、受信者の準備が整うまでメッセージを保持するメッセージ指向のミドルウェアです。
これに対し、トピックは、メッセージを保持し、購読者に配信する役割を担うメッセージ指向のミドルウェアです。
したがって、ここがキューとトピックの主な違いです。
機能性
Point to Pointメッセージングでは、送信者はキューにメッセージを格納し、受信者はキューからメッセージを読み取ります。
一方、publisher, subscriberメッセージングでは、送信者はトピックにメッセージを格納し、トピックは購読者にメッセージを配信する。
顧客数
また、キューとトピックのもう一つの違いは、キューがレシーバーで動作するのに対して、トピックは複数のサブスクライバーで動作することである。
結論
Java Message Service (JMS) は、メッセージを送信するための Java メッセージ指向のミドルウェア API です。
主に point to point と publisher-subscriber の2つのメッセージングモデルまたはドメインをサポートしています。
Point to Point はキューを使い、Publisher-Subscriber はトピックを使います。
キューとトピックの主な違いは、キューがポイント・トゥ・ポイントのメッセージ領域で使われるメッセージ指向のミドルウェアであるのに対し、トピックはパブリッシャーサブスクライバーのメッセージ領域で使われるメッセージ指向のミドルウェアである点です。