Request Update コマンド・メッセージは、 特定の (オプションの) フィルターに一致する、指定したトピックおよびサブスクリプション・ポイントの、 現在の保存パブリケーションを要求するため、サブスクライバーからブローカーに送信されます。
このメッセージは、ブローカーの制御キュー SYSTEM.BROKER.CONTROL.QUEUE に送信されます。 要求更新内のトピックにアクセスする権限に加え、このキューにメッセージを入れる権限も必要です。これは、ブローカーのシステム管理者によって設定されます。
通常、このコマンドを使用するのは、登録時にサブスクライバーがオプション PubOnReqOnly を指定した場合です。 ブローカーに、一致する保存パブリケーションがある場合、 それらはサブスクライバーに送信されます。 ブローカーに一致する保存パブリケーションがない場合、要求は戻りコード MQRCCF_NO_RETAINED_MSG で失敗します。 リクエスターは、同じ Topic、SubPoint、および Filter 値を使って、 前もってサブスクリプションを登録しておく必要があります。
このプロパティーは必須ですが、このメッセージ内に出現してもよいのは 1 つだけです。
このプロパティーを省略すると、デフォルトのサブスクリプション・ポイントが使用されます。
<Filter> プロパティーの値は、現在更新を要求しているサブスクリプションの元のサブスクリプションに指定されたものと同じ値でなければなりません。
このプロパティーを省略すると、内容のフィルター操作は行われません。
メッセージ記述子 (MQMD) の CorrelId は、ゼロにすることはできず、 一致するパブリケーションをサブスクライバー・キューに送信する場合に使用されます。
すべてのオプションがデフォルト値を取ります。 これは、<RegOpt> プロパティーを省略するのと同じことです。 他のオプションが同時に指定された場合、None は無視されます。
指定された場合、サブスクライバー (キュー、キュー・マネージャー、および correlid) の ID は、単一のユーザー ID に制限されません。 これはブローカーのこれまでの振る舞いとは異なります。これまでの振る舞いでは、元の登録メッセージのユーザー ID がサブスクライバーの ID に関連付けられ、以後は他のユーザーはその ID を使用できなくなります。 よって、新しいサブスクライバーが同じ ID の使用を試みると、コマンドは戻りコード MQRCCF_DUPLICATE_SUBSCRIPTION で失敗します。
そのため、適切な権限があればどのユーザーでもサブスクリプションを変更または登録解除することができます。 したがって、そのユーザー ID が、元のサブスクライバーのユーザー ID に一致するかどうかを調べる必要はありません。
このオプションを既存のサブスクリプションに追加するには、コマンドが、元のサブスクリプションと同じユーザー ID に由来するものでなければなりません。
Request Update コマンドのサブスクリプションに VariableUserId が設定されている場合、これを要求更新時に設定して、どのサブスクリプションを指しているかを示さなければなりません。 設定されていない場合、Request Update コマンドのユーザー ID が使われて、サブスクリプションの ID が識別されます。 サブスクリプション名を指定すれば、上記の設定は他のサブスクライバー ID と一緒にオーバーライドされます。
このプロパティーが省略されると、デフォルトとなって登録オプションは設定されません。
このプロパティーが省略されると、デフォルトは、 メッセージ記述子 (MQMD) の ReplyToQMgr 名になります。 結果の名前がブランクである場合、デフォルトでブローカーの QMgrName になります。
このプロパティーが省略されると、デフォルトは、 メッセージ記述子 (MQMD) の ReplyToQ 名になりますが、 この場合ブランクにすることはできません。
VariableUserId が設定されている場合、ユーザー ID がサブスクリプションのものと異なっていると、コマンドは、新規のコマンド・メッセージのユーザー ID に、ストリーム・キューをブラウズする権限と、サブスクリプションのサブスクライバー・キューに書き込む権限がある場合に正常に完了します。そのような権限がないと、コマンドは戻りコード MQRCCF_NOT_AUTHORIZED で失敗します。
このコマンドの従来の ID に一致するサブスクリプションが存在しても、SubName がないと、Request Update コマンドは戻りコード MQRCCF_SUB_NAME_ERROR で失敗します。
従来の ID に一致していて、SubName の指定されていないコマンド・メッセージを使って、SubName の付いたサブスクリプションの更新要求を試みた場合、コマンドは正常に完了します。