パブリッシュ/サブスクライブ
パブリッシュ/サブスクライブは、サブスクライバーがパブリッシャーから情報をメッセージの形で受け取るためのメカニズムです。
標準的なパブリッシュ/サブスクライブ・システムには、複数のパブリッシャーと複数のサブスクライバーが含まれます。 1 つのアプリケーションがパブリッシャーとサブスクライバーの両方を兼ねることもあります。
情報の提供者はパブリッシャーと呼ばれます。 パブリッシャーは主題に関する情報を提供しますが、その情報に関心のあるアプリケーションのことは何も知る必要はありません。 パブリッシャーは、パブリッシュするこうした情報をパブリケーションと呼ばれるメッセージ形式で生成し、これらのメッセージのトピックを定義します。
情報の利用者 (コンシューマー) は、サブスクライバーと呼ばれます。 サブスクライバーは、そのサブスクライバーが必要とするトピックを記述するサブスクリプションを作成します。 したがって、どのパブリケーションがサブスクライバーに転送されるかは、サブスクリプションで決まります。 サブスクライバーは複数のサブスクリプションを行え、さまざまなパブリッシャーから情報を受け取ることができます。
パブリッシュされた情報は JMS メッセージまたは MQTT メッセージで送られ、情報のサブジェクト (主題) はそのトピックによって識別されます。 パブリッシャーは情報をパブリッシュするときにトピックを指定し、サブスクライバーは、受け取るパブリケーションを示すトピックを指定します。 サブスクライバーには、自分がサブスクライブしたトピックに関する情報だけが送られます。
以下の図はパブリッシュ/サブスクライブ・モデルを示しています。 この図では、1 つのパブリッシャーが 1 つのトピックにメッセージをパブリッシュします。 そのトピックの 3 つのサブスクライバーすべてが、そのメッセージのコピーを受け取ります。
- パブリッシャーは、サブスクライバーがどれであるかを知る必要がありません。 つまり、パブリッシャーは宛先情報を含める必要がなく、複雑さが軽減されます。
- サブスクライバーはパブリッシャーと対にして指定するのではなく、分離されます。 このように分離されていて、サブスクライバーが特定のトピックに関心を持っている場合のみメッセージを受け取るので、便利です。 サブスクライバーは、パブリッシャーに影響を与えることなく、任意の時点でトピックのサブスクライブやアンサブスクライブを行うことができます。
- メッセージング・トポロジーが動的かつ柔軟になります。 パブリッシャーとサブスクライバーはトピック構造を使用して、素早くメッセージをブロードキャストしたり、受け取ったりすることができます。
- パブリッシュ/サブスクライブを使用すると、デプロイメントと統合を簡単に行うことができます。
また、共有サブスクリプションを使用することもできます。 共有サブスクリプションを使用することで、1 つのトピック・サブスクリプションからのメッセージを受け取る処理を複数のサブスクライバー間で共有することができます。 各メッセージは、その共有サブスクリプションに属する 1 つのサブスクライバーのみによって受信されます。 共有サブスクリプションについて詳しくは、サブスクライバーおよびサブスクリプションを参照してください。