Publish コマンド・メッセージは、パブリッシャーからブローカーに送られるか、ブローカーからサブスクライバーへ送られて、指定のトピックに関する情報をパブリッシュします。
このメッセージは、Publication ノードを含むメッセージ・フローの入力キューに送信されます。 このキューにメッセージを入れる権限と、指定したトピックに関してパブリッシュする権限が必要です。
トピックの全部ではなく一部だけに対する権限をもつユーザーの場合、該当するトピックだけが削除されます。どのトピックがパブリッシュされないかを知らせる警告応答が出されます。
サブスクライバーに一致するサブスクリプションがある場合、 ブローカーは、パブリッシュ・メッセージを対応する Register Subscriber コマンド・メッセージで定義されたサブスクライバー・キューに転送します。
ブローカーにコマンド・メッセージを送信する時に必要で、ブローカーがサブスクライバーにパブリケーションを送信するときに使用するメッセージ記述子 (MQMD) パラメーターの詳細については、ブローカー応答メッセージを参照してください。
Publish メッセージがローカル・パブリケーションでない限り、ブローカーは、一致するサブスクリプションを持つネットワーク中の他のブローカーにそのメッセージを転送します。
パブリケーション・データは、存在すれば、メッセージ本体に含められます。 このデータは、MQRFH2 ヘッダーの NameValueData フィールドにある、 <mcd> フォルダーに記述されています。
このプロパティーは、指定する必要があります。
このプロパティーは、指定する必要があり、 必要なトピックの数に合わせて任意に繰り返すことができます。
このプロパティーは、ブローカーに送信されるパブリケーション・メッセージに組み込むことはできませんが、 これらのメッセージが適切なサブスクライバーに送信される前に、 ブローカーによってパブリケーション・メッセージに自動的に追加されます。 <SubPoint> プロパティーの値は、 パブリッシングを処理している Publication ノードのサブスクリプション・ポイント属性の値になります。
ブローカーは、パブリケーションのコピーを保存します。 このオプションを設定しないと、パブリケーションは、 ブローカーがそれをすべての現行サブスクライバーに送信するとすぐに削除されます。
(ブローカーのみが設定できます。) このパブリケーションは、ブローカーによって保存されています。 ブローカーは、サブスクリプションが InformIfRetained オプションを指定して登録されている場合、 このオプションを設定して、このパブリケーションが以前にパブリッシュされており、 保存されていることをサブスクライバーに通知します。これは、Register Subscriber または Request Update コマンド・メッセージへの応答としてのみ設定されます。サブスクライバーに直接送信される保存パブリケーションは、このオプションを設定しません。
このオプションは、このパブリケーションを他のブローカーに送信しないようブローカーに指示します。 このブローカーで登録したすべてのサブスクライバーは、 一致するサブスクリプションを持っていれば、このパブリケーションを受け取ります。
このオプションによって、パブリッシャーが同じトピックについてサブスクライバーでもある、 会議タイプのアプリケーションの処理がさらに簡単になります。 このオプションは、一致するサブスクリプションがある場合でも、 パブリッシャーのサブスクライバー・キューにはパブリケーションを送信しないようにブローカーに指示します。 パブリッシャーのサブスクライバー・キューは、以下に説明するとおり、 QMgrName、 QName、およびオプションで CorrelId で構成されます。
MQMD (ゼロにすることはできない) の CorrelId は、 パブリッシャーがサブスクライバーでもあるアプリケーションにおいては、 パブリッシャーのサブスクライバー・キューの一部です。
すべてのオプションがデフォルト値を取ります。 これは、パブリケーション・オプション・プロパティーを省略するのと同じことです。 他のオプションが同時に指定された場合、None は無視されます。
このプロパティーが省略されると、デフォルトとなってパブリケーション・オプションは設定されません。
YYYYMMDDHHMMSSTH
ここでは世界時を使用します。 この情報は、サブスクライバーへの送信の前にブローカーによって検査されません。
これは、各パブリケーションごとに 1 ずつ増加しなければなりません。 ただしブローカーは、この検査は行わず、サブスクライバーに単に伝送するだけです。
同じトピックに関するパブリケーションが、別の相互接続されているブローカーにパブリッシュされる場合に、 シーケンス番号を使用するのであれば、必ずそれを解明しやすい番号にするのはパブリッシャーの役割です。
このプロパティーが省略されると、デフォルトは、 メッセージ記述子 (MQMD) の ReplyToQMgr 名になります。その結果の名前がブランクである場合、デフォルトでブローカーのキュー・マネージャー名になります。
このプロパティーを省略した場合、デフォルトは、メッセージ記述子 (MQMD) 内の ReplyToQ 名になり、OtherSubsOnly が設定されている場合、これはブランクであってはなりません。
以下に、Publish コマンド・メッセージの NameValueData のいくつかの例を示します。
<psc> <Command>Publish</Command> <Topic>Sport/Soccer/Event/MatchStarted</Topic> </psc>
<psc> <Command>Publish</Command> <PubOpt>RetainPub</PubOpt> <Topic>Sport/Soccer/State/LatestScore/Team1 Team2</Topic> </psc>