Request Update メッセージ

Request Update コマンド・メッセージは、 特定の (オプションの) フィルターに一致する、指定したトピックおよびサブスクリプション・ポイントの、 現在の保存パブリケーションを要求するため、サブスクライバーからブローカーに送信されます。

このメッセージは、ブローカーの制御キュー SYSTEM.BROKER.CONTROL.QUEUE に送信されます。 要求更新内のトピックにアクセスする権限に加え、このキューにメッセージを入れる権限も必要です。これは、ブローカーのシステム管理者によって設定されます。

通常、このコマンドを使用するのは、登録時にサブスクライバーがオプション PubOnReqOnly を指定した場合です。 ブローカーに、一致する保存パブリケーションがある場合、 それらはサブスクライバーに送信されます。 ブローカーに一致する保存パブリケーションがない場合、要求は戻りコード MQRCCF_NO_RETAINED_MSG で失敗します。 リクエスターは、同じ Topic、SubPoint、および Filter 値を使って、 前もってサブスクリプションを登録しておく必要があります。

プロパティー

<Command> (MQPSC_COMMAND)
値は、ReqUpdate (MQPSC_REQUEST_UPDATE) です。 このプロパティーは、指定する必要があります。
<Topic> (MQPSC_TOPIC)
値は、サブスクライバーが要求するトピックです。ワイルドカード文字を使用することができます。

このプロパティーは必須ですが、このメッセージ内に出現してもよいのは 1 つだけです。

<SubPoint> (MQPSC_SUBSCRIPTION_POINT)
この値は、 サブスクリプションの接続先のサブスクリプション・ポイントです。

このプロパティーを省略すると、デフォルトのサブスクリプション・ポイントが使用されます。

<Filter> (MQPSC_FILTER)
値は、 パブリケーション・メッセージの内容に対するフィルターとして使用される ESQL 式です。 指定したトピックのパブリケーションは、フィルターと一致すると、 サブスクライバーに送信されます。

<Filter> プロパティーの値は、現在更新を要求しているサブスクリプションの元のサブスクリプションに指定されたものと同じ値でなければなりません。

このプロパティーを省略すると、内容のフィルター操作は行われません。

<RegOpt> (MQPSC_REGISTRATION_OPTION)
登録オプション・プロパティーは、以下の値を取ることができます。
CorrelAsId  
(MQPSC_CORREL_ID_AS_IDENTITY)

メッセージ記述子 (MQMD) の CorrelId は、ゼロにすることはできず、 一致するパブリケーションをサブスクライバー・キューに送信する場合に使用されます。

None  
(MQPSC_NONE)

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

VariableUserId  
(MQPSC_VARIABLE_USER_ID)

指定された場合、サブスクライバー (キュー、キュー・マネージャー、および correlid) の ID は、単一のユーザー ID に制限されません。 これはブローカーのこれまでの振る舞いとは異なります。これまでの振る舞いでは、元の登録メッセージのユーザー ID がサブスクライバーの ID に関連付けられ、以後は他のユーザーはその ID を使用できなくなります。 よって、新しいサブスクライバーが同じ ID の使用を試みると、コマンドは戻りコード MQRCCF_DUPLICATE_SUBSCRIPTION で失敗します。

そのため、適切な権限があればどのユーザーでもサブスクリプションを変更または登録解除することができます。 したがって、そのユーザー ID が、元のサブスクライバーのユーザー ID に一致するかどうかを調べる必要はありません。

このオプションを既存のサブスクリプションに追加するには、コマンドが、元のサブスクリプションと同じユーザー ID に由来するものでなければなりません。

Request Update コマンドのサブスクリプションに VariableUserId が設定されている場合、これを要求更新時に設定して、どのサブスクリプションを指しているかを示さなければなりません。 設定されていない場合、Request Update コマンドのユーザー ID が使われて、サブスクリプションの ID が識別されます。 サブスクリプション名を指定すれば、上記の設定は他のサブスクライバー ID と一緒にオーバーライドされます。

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

<QMgrName> (MQPSC_Q_MGR_NAME)
値は、 一致する保存パブリケーションがブローカーによって送信される先のサブスクライバー・キューのキュー・マネージャーの名前です。

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

<QName> (MQPSC_Q_NAME)
値は、 一致する保存パブリケーションがブローカーによって送信される先のサブスクライバー・キューの名前です。

このプロパティーが省略されると、デフォルトは、 メッセージ記述子 (MQMD) の ReplyToQ 名になりますが、 この場合ブランクにすることはできません。

<SubName> (MQPSC_SUBSCRIPTION_NAME)
これは、特定のサブスクリプションに付ける名前です。 Request Update コマンドに SubName を指定すると、サブスクリプションそのものに VariableUserId が設定されていないかぎり、 ユーザー ID 以外の他のすべての ID フィールドよりもこの値が優先されます。 VariableUserId が設定されていない場合に Request Update コマンドが正常に完了するのは、コマンド・メッセージのユーザー ID がサブスクリプションのユーザー ID に一致する場合だけです。 コマンド・メッセージのユーザー ID がサブスクリプションのユーザー ID に一致しないと、コマンドは戻りコード MQRCCF_DUPLICATE_IDENTITY で失敗します。

VariableUserId が設定されている場合、ユーザー ID がサブスクリプションのものと異なっていると、コマンドは、新規のコマンド・メッセージのユーザー ID に、ストリーム・キューをブラウズする権限と、サブスクリプションのサブスクライバー・キューに書き込む権限がある場合に正常に完了します。そのような権限がないと、コマンドは戻りコード MQRCCF_NOT_AUTHORIZED で失敗します。

このコマンドの従来の ID に一致するサブスクリプションが存在しても、SubName がないと、Request Update コマンドは戻りコード MQRCCF_SUB_NAME_ERROR で失敗します。

従来の ID に一致していて、SubName の指定されていないコマンド・メッセージを使って、SubName の付いたサブスクリプションの更新要求を試みた場合、コマンドは正常に完了します。

以下に、Request Update コマンド・メッセージの NameValueData の例を示します。 サンプル・アプリケーションでは、結果サービスはこのメッセージを使用して、 すべてのチームの最新のスコアを含む、保存パブリケーションを要求します。 サブスクライバーの ID は、CorrelId を含め、MQMD のデフォルトから取られます。
 <psc>
  <Command>ReqUpdate</Command>
  <RegOpt>CorrelAsId</RegOpt>
  <Topic>Sport/Soccer/State/LatestScore/#</Topic>
 </psc>
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2006 最終更新: 08/21/2006
aq07000_