发布消息

发布命令消息从发布程序发送到代理,或从代理发送到订户和到在指定主题上的发布信息。

将该消息发送至包含 Publication 节点的消息流的输入队列。必须有权限把消息放入到该队列,并在指定的主题上发布。

如果用户关于一些主题(而非全部)有权限,则仅发布那些主题;警告响应表明不发布哪些主题。

如果订户有任何匹配的预订,代理将把发布消息转发到在相应的 Register Subscriber 命令消息中定义的订户队列。

请参阅代理响应消息以获取当发送命令消息到代理时所需要的,以及当代理把发布内容转发到订户时所使用的消息描述符(MQMD)参数的详细信息。

除非预订的是本地发布内容,否则代理把发布消息转发到网络中有匹配预订的其他代理。

发布数据(如果有的话)包括在消息的主体中。该数据可在 MQRFH2 头的 NameValueData 字段内的 <mcd> 文件夹中进行描述。

属性

<Command> MQPSC_COMMAND
该值为 PublishMQPSC_PUBLISH)。

必须指定该属性。

<Topic> MQPSC_TOPIC
该值是包含分类该发布内容的主题的字符串。不允许通配符。

必须指定该属性,并且可选地能为所需任意多的主题重复它。

<SubPoint> MQPSC_SUBSCRIPTION_POINT
进行内容发布的预订点。

该属性不应当包含在发送到代理的发布消息中,但是那些消息被发送到任何相应的订户之前,将由代理自动添加到发布消息。<SubPoint> 属性的值是处理发布的 Publication 节点的预订点属性的值。

<PubOpt>MQPSC_PUBLICATION_OPTION
发布选项属性可以采用以下值:
RetainPub  
MQPSC_RETAIN_PUB))

该代理要保留发布内容的副本。 如果未设置该选项,当代理已经把发布内容发送到所有其当前订户时,立刻删除发布内容。

IsRetainedPub  
MQPSC_IS_RETAINED_PUB

(只能由代理设置。)该发布内容由代理保留。 代理设置该选项来通知订户该发布内容较早已出版,并已经被保留,假设预订已经用 InformIfRetained 选项注册。 设置该选项只用于响应注册订户请求更新命令消息。直接被发送到订户的保留发布内容没有该选项设置。

Local  
MQPSC_LOCAL

该选项告知代理该发布内容不应当被发送到其他代理。 注册在该代理的所有订户接收到该发布内容(如果它们有匹配的预订)。

OtherSubsOnly  
MQPSC_OTHER_SUBS_ONLY

该选项允许引用类型应用程序的较简单的处理,其中发布程序也是对同一主题的订户。 它让代理不将发布内容发送到发布程序的订户队列(即便有匹配预订)。发布程序的订户队列由其 QMgrNameQNameCorrelId(可选)组成,如下所述。

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>
第二个示例用于保留发布内容。发布了 Team1 和 Team2 之间比赛的最新比分。
 <psc>
  <Command>Publish</Command>
  <PubOpt>RetainPub</PubOpt>
  <Topic>Sport/Soccer/State/LatestScore/Team1 Team2</Topic>
 </psc>
声明 | 商标 | 下载 | 书库 | 支持 | 反馈
Copyright IBM Corporation 1999, 2006 最后一次更新时间:2006/08/14
aq06980_