パブリケーション は、パブリッシュ/サブスクライブ ・システムのブローカーで使用可能な指定したトピックについての情報です。
通常、ブローカーは、接続されているすべての、パブリケーションへのサブスクリプションを登録済みのアプリケーションに受け取ったパブリケーションを配布します。また、ブローカーは、他のすべての接続されているブローカーへも直接、またはパブリケーションのサブスクライバーを持つブローカーのネットワークを通してパブリケーションを配布します。
パブリッシャーは、パブリケーションへのアクセスを、パブリッシャーと同じブローカーに登録されているサブスクライバーのみに 制限できます。このパブリケーションを、ローカル・パブリケーション といいます。 ローカル・パブリケーションは、他のブローカーには転送されません。
パブリッシャーと同じブローカーに登録されているサブスクライバーのみに 配布が制限されていないパブリケーションは、グローバル・パブリケーション と呼ばれています。 グローバル・パブリケーションは、直接、または 1 つ以上のサブスクライバーを持つブローカーのネットワークを通して接続されているすべて のブローカーへ転送されます。
通常、ブローカーは、パブリケーションを送信した後、そのパブリケーションを廃棄します。 しかし、パブリッシャーは、(Publish メッセージの場合、RetainPub オプションを指定することによって) ブローカーがパブリケーションのコピーを保存するよう指定できます。 このパブリケーションは、保存パブリケーション と呼ばれます。
保存パブリケーションがパブリッシュ済みの場合、そのパブリケーションに対する新規のサブスクライバーは、パブリケーションが再びパブリッシュされるのを待たずに、パブリケーションを受け取れます。
例えば、株式価格のサブスクリプションを登録しているサブスクライバーは、株価がリパブリッシュされるのを待たなくても、パブリッシュされた最新の株価をすぐに受け取ります。
ブローカーは各トピックおよびサブスクリプション・ポイントの組み合わせごとに 1 つのパブリケーションしか保存しません。
パブリッシュされた情報は、状態 情報もしくは イベント 情報のいずれかに分類することができます。
状態情報とは、何かの現在の状態についての情報です。現在の株価や、サッカーの試合の現在の得点は、どちらも状態情報の例です。
イベント情報とは、生じる個別のイベントに関する情報です。 株価の変化や、サッカーの試合の特定のスコアは、どちらもイベント情報の例です。
イベントが生じるとき、現行の状態情報は必要でなくなり、新しい状態情報がそれを置き換えます。
パブリケーションが状態情報を含む場合、これはしばしば保存パブリケーションとしてパブリッシュされます。 通常新しいサブスクライバーは、現行情報を即時に入手したいものです。サブスクライバーは、イベントが生じて情報がリパブリッシュされるまで待つことを望みません。