请求更新消息

请求更新命令消息从订户发送到代理,来请求指定的主题和与给出的(可选)过滤器匹配的预订点的当前保留发布内容。

将消息发送至 SYSTEM.BROKER.CONTROL.QUEUE(代理的控制队列)。除了请求更新中对主题的访问权限外,还必需具有可将消息放置该队列的权限,这由代理的系统管理员设置。

如果订户在注册时指定 PubOnReqOnly 选项,通常使用该命令。如果代理有任何匹配的保留发布内容,它们被发送到订户。如果代理没有匹配的保留发布内容,则请求失败,返回码为 MQRCCF_NO_RETAINED_MSG。该请求者必须先注册具有相同 Topic、SubPoint 和 Filter 值的预订。

属性

<Command> MQPSC_COMMAND
该值为 ReqUpdateMQPSC_REQUEST_UPDATE)。 必须指定该属性。
<Topic> MQPSC_TOPIC
该值是订户请求的主题,允许使用通配符。

该属性必须被指定,但是在该消息中只允许发生一次。

<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)的身份时,不限定于单个用户标识。这不同于以下两种情况:代理的现有工作情况将原始注册消息的用户标识与预订的标识相关联;从此阻止使用该标识的任何其他用户。如果新订户尝试使用同一身份,则命令失败,返回码为 MQRCCF_DUPLICATE_SUBSCRIPTION

这允许任何用户修改或注销预订(当它们有适当的权限时)。 因此,不需要检查用户标识是否与原始订户相匹配。

要添加该选项到现有的预订,命令必须来自与原始预订相同的用户标识。

如果 Request Update 命令的预订有 VariableUserId 集,这必须设置在请求更新时间以表明引用哪些预订。 否则,Request Update 命令的用户标识被用于标识预订。 如果提供了预订名称,这连同其他订户标识,会被覆盖。

如果属性被省略,缺省是不设置注册选项。

<QMgrName> MQPSC_Q_MGR_NAME
该值时订户队列的队列管理器的名称,由代理发送匹配的保留发布内容到此队列。

如果省略该属性,缺省是消息描述符(MQMD)中的 ReplyToQMgr 名称。 如果生成的名称为空,则它缺省为代理的 QMgrName

<QName> MQPSC_Q_NAME
该值是订户队列的名称,由代理发送匹配的保留发布内容到此队列。

如果省略该属性,则缺省为消息描述符(MQMD)中的 ReplyToQ 名称,这种情况下,该名称不能为空。

<SubName> MQPSC_SUBSCRIPTION_NAME
这是给定到特定的预订的名称。 如果在 Request Update 命令上指定 SubName 值,则该值优先于所有其他标识字段(除用户标识外),除非在预订上设置了 VariableUserId、如果 VariableUserId 未设置,Request Update 命令只在命令消息的用户标识与预订的用户标识相匹配的情况下成功。如果命令消息的用户标识与预订的用户标识不匹配,则命令失败,返回码为 MQRCCF_DUPLICATE_IDENTITY

如果设置 VariableUserId,并且用户标识不同于来自预订的用户标识,如果新命令消息有权限浏览流队列并放入到预订的订户队列,命令成功。否则,命令失败,返回码为 MQRCCF_NOT_AUTHORIZED

如果预订与该命令的传统标识相匹配,但没有指定 SubName,则 Request Update 命令失败,返回码为 MQRCCF_SUB_NAME_ERROR

如果进行了尝试,使用与传统身份相匹配的命令消息对有 SubName 的预订请求更新,但是没有指定 SubName,该命令成功。

示例

此处有一个 Request Update 命令消息的 NameValueData 的示例。在样本应用程序中,导致服务使用该消息请求包含所有队的最新比分的发布内容。 订户的身份(包括 CorrelId)从 MQMD 的缺省值中获取。
 <psc>
  <Command>ReqUpdate</Command>
  <RegOpt>CorrelAsId</RegOpt>
  <Topic>Sport/Soccer/State/LatestScore/#</Topic>
 </psc>
声明 | 商标 | 下载 | 书库 | 支持 | 反馈
Copyright IBM Corporation 1999, 2006 最后一次更新时间:2006/08/14
aq07000_