Publish メッセージ

Publish コマンド・メッセージは、パブリッシャーからブローカーに送られるか、ブローカーからサブスクライバーへ送られて、指定のトピックに関する情報をパブリッシュします。

このメッセージは、Publication ノードを含むメッセージ・フローの入力キューに送信されます。 このキューにメッセージを入れる権限と、指定したトピックに関してパブリッシュする権限が必要です。

トピックの全部ではなく一部だけに対する権限をもつユーザーの場合、該当するトピックだけが削除されます。どのトピックがパブリッシュされないかを知らせる警告応答が出されます。

サブスクライバーに一致するサブスクリプションがある場合、 ブローカーは、パブリッシュ・メッセージを対応する Register Subscriber コマンド・メッセージで定義されたサブスクライバー・キューに転送します。

ブローカーにコマンド・メッセージを送信する時に必要で、ブローカーがサブスクライバーにパブリケーションを送信するときに使用するメッセージ記述子 (MQMD) パラメーターの詳細については、ブローカー応答メッセージを参照してください。

Publish メッセージがローカル・パブリケーションでない限り、ブローカーは、一致するサブスクリプションを持つネットワーク中の他のブローカーにそのメッセージを転送します。

パブリケーション・データは、存在すれば、メッセージ本体に含められます。 このデータは、MQRFH2 ヘッダーの NameValueData フィールドにある、 <mcd> フォルダーに記述されています。

プロパティー

<Command> (MQPSC_COMMAND)
値は、Publish(MQPSC_PUBLISH) です。

このプロパティーは、指定する必要があります。

<Topic> (MQPSC_TOPIC)
値は、このパブリケーションをカテゴリー化するトピックを含むストリングです。 ワイルドカード文字は使用できません。

このプロパティーは、指定する必要があり、 必要なトピックの数に合わせて任意に繰り返すことができます。

<SubPoint> (MQPSC_SUBSCRIPTION_POINT)
パブリケーションがパブリッシュされる、サブスクリプション・ポイント。

このプロパティーは、ブローカーに送信されるパブリケーション・メッセージに組み込むことはできませんが、 これらのメッセージが適切なサブスクライバーに送信される前に、 ブローカーによってパブリケーション・メッセージに自動的に追加されます。 <SubPoint> プロパティーの値は、 パブリッシングを処理している Publication ノードのサブスクリプション・ポイント属性の値になります。

<PubOpt> (MQPSC_PUBLICATION_OPTION)
パブリケーション・オプション・プロパティーは、 以下の値を取ることができます。
RetainPub  
(MQPSC_RETAIN_PUB)

ブローカーは、パブリケーションのコピーを保存します。 このオプションを設定しないと、パブリケーションは、 ブローカーがそれをすべての現行サブスクライバーに送信するとすぐに削除されます。

IsRetainedPub  
(MQPSC_IS_RETAINED_PUB)

(ブローカーのみが設定できます。) このパブリケーションは、ブローカーによって保存されています。 ブローカーは、サブスクリプションが InformIfRetained オプションを指定して登録されている場合、 このオプションを設定して、このパブリケーションが以前にパブリッシュされており、 保存されていることをサブスクライバーに通知します。これは、Register Subscriber または Request Update コマンド・メッセージへの応答としてのみ設定されます。サブスクライバーに直接送信される保存パブリケーションは、このオプションを設定しません。

Local  
(MQPSC_LOCAL)

このオプションは、このパブリケーションを他のブローカーに送信しないようブローカーに指示します。 このブローカーで登録したすべてのサブスクライバーは、 一致するサブスクリプションを持っていれば、このパブリケーションを受け取ります。

OtherSubsOnly  
(MQPSC_OTHER_SUBS_ONLY)

このオプションによって、パブリッシャーが同じトピックについてサブスクライバーでもある、 会議タイプのアプリケーションの処理がさらに簡単になります。 このオプションは、一致するサブスクリプションがある場合でも、 パブリッシャーのサブスクライバー・キューにはパブリケーションを送信しないようにブローカーに指示します。 パブリッシャーのサブスクライバー・キューは、以下に説明するとおり、 QMgrNameQName、およびオプションで CorrelId で構成されます。

CorrelAsId  
(MQPSC_CORREL_ID_AS_IDENTITY)

MQMD (ゼロにすることはできない) の CorrelId は、 パブリッシャーがサブスクライバーでもあるアプリケーションにおいては、 パブリッシャーのサブスクライバー・キューの一部です。

None  
(MQPSC_NONE)

すべてのオプションがデフォルト値を取ります。 これは、パブリケーション・オプション・プロパティーを省略するのと同じことです。 他のオプションが同時に指定された場合、None は無視されます。

このプロパティーが省略されると、デフォルトとなってパブリケーション・オプションは設定されません。

<PubTime> (MQPSC_PUBLISH_TIMESTAMP)
値は、 パブリッシャーが設定するオプションのパブリケーション・タイム・スタンプです。 長さは 16 文字であって、形式は次のとおりです。
   YYYYMMDDHHMMSSTH

ここでは世界時を使用します。 この情報は、サブスクライバーへの送信の前にブローカーによって検査されません。

<SeqNum> (MQPSC_SEQUENCE_NUMBER)
値は、 パブリッシャーが設定するオプションのシーケンス番号です。

これは、各パブリケーションごとに 1 ずつ増加しなければなりません。 ただしブローカーは、この検査は行わず、サブスクライバーに単に伝送するだけです。

同じトピックに関するパブリケーションが、別の相互接続されているブローカーにパブリッシュされる場合に、 シーケンス番号を使用するのであれば、必ずそれを解明しやすい番号にするのはパブリッシャーの役割です。

<QMgrName> (MQPSC_Q_MGR_NAME)
値は、パブリッシャーがサブスクライバーでもあるアプリケーションにおいて、パブリッシャーのサブスクライバー・キューのキュー・マネージャー名の入ったストリングです (OtherSubsOnly を参照)。

このプロパティーが省略されると、デフォルトは、 メッセージ記述子 (MQMD) の ReplyToQMgr 名になります。その結果の名前がブランクである場合、デフォルトでブローカーのキュー・マネージャー名になります。

<QName> (MQPSC_Q_NAME)
値は、パブリッシャーがサブスクライバーでもあるアプリケーションにおいて、 パブリッシャーのサブスクライバー・キューのキュー名の入ったストリングです (OtherSubsOnly を参照)。

このプロパティーを省略した場合、デフォルトは、メッセージ記述子 (MQMD) 内の ReplyToQ 名になり、OtherSubsOnly が設定されている場合、これはブランクであってはなりません。

以下に、Publish コマンド・メッセージの NameValueData のいくつかの例を示します。

最初の例は、 サンプル・アプリケーションの一致シミュレーターによって送信されるパブリケーションであって、 試合が開始したことを示しています。
 <psc>
  <Command>Publish</Command>
  <Topic>Sport/Soccer/Event/MatchStarted</Topic>
 </psc>
2 番目の例は、保存パブリケーションです。 Team1 と Team2 との試合の最新スコアをパブリッシュします。
 <psc>
  <Command>Publish</Command>
  <PubOpt>RetainPub</PubOpt>
  <Topic>Sport/Soccer/State/LatestScore/Team1 Team2</Topic>
 </psc>
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2006 最終更新: 08/21/2006
aq06980_