MQSUBRQ-预订请求

当订户已向 MQSO_PUBLIC ICATIONS_ON_REQUEST 注册时,使用 MQSUBRQ 调用来发出保留发布请求。

语法

MQSUBRQHconnHsubActionSubRqOptsCompcodeReason)

参数

Hconn
类型 :MQHCONN-输入

此句柄表示与队列管理器的连接。 先前的 MQCONN 或 MQCONNX 调用返回了 Hconn 的值。

z/OS® for CICS® 应用程序上,可以省略 MQCONN 调用,并为 Hconn指定以下值:
MQHC_DEF_HCONN
缺省连接句柄。
Hsub
类型 :MQHOBJ-输入

此句柄表示要为其请求更新的预订。 Hsub 的值是从先前的 MQSUB 调用返回的。

操作
类型 :MQLONG-输入
此参数控制正在预订上请求的特定操作。 必须指定以下值:
MQSR_ACTION_PUBLICATION

此操作请求针对指定主题发送更新发布。 仅当订户在进行预订时在 MQSUB 调用上指定了选项 MQSO_PUBLIC ICATIONS_ON_REQUEST 时,才能使用此选项。 如果队列管理器具有主题的保留发布内容,那么会将此内容发送给订户。 否则,调用将失败。 如果向应用程序发送了保留的发布,那么该发布由该发布的 MQIsRetained 消息属性指示。

由于 Hsub 参数表示的现有预订中的主题可能包含通配符,因此订户可能会接收到多个保留发布。

SubRqOpts
类型 :MQSRO-输入/输出

这些选项控制 MQSUBRQ 的操作,请参阅 MQSRO-预订请求选项 以获取详细信息。

如果不需要任何选项,那么以 C 或 S/390 汇编程序编写的程序可以指定空参数地址,而不是指定 MQSRO 结构的地址。

CompCode
类型:MQLONG - 输出
完成代码;此完成代码为以下其中一项:
MQCC_OK
成功完成
MQCC_WARNING
警告 (部分完成)
MQCC_FAILED
通话失败
原因
类型:MQLONG - 输出

限定 CompCode的原因码。

如果 CompCode 为 MQCC_OK:
MQRC_NONE
(0, X'000') 没有要报告的原因。
如果 CompCode 是 MQCC_FAILED:
MQRC_FUNCTION_NOT_SUPPORTED
2298X'08FA') 请求的功能在当前环境中不可用。
MQRC_NO_RETAINED_MSG
2437 (X'0985 ') 当前没有为此主题存储的保留发布。
MQRC_OPTIONS_ERROR
2046X'07FE') 选项参数或字段包含无效选项,或无效选项组合。
MQRC_Q_MGR_QUIESCING
2161 (X'0871 ') 队列管理器正在停顿。
MQRC_SRO_ERROR
2438 (X'0986 ') 在 MQSUBRQ 调用上, "预订请求选项" MQSRO 无效。
MQRC_RETAINED_MSG_Q_ERROR
2525X'09DD') 无法检索已订阅主题字符串的保留出版物。
MQRC_RETAINED_NOT_交付
2526X'09DE') 已订阅主题字符串存在的保留出版物无法投递到订阅目标队列,也无法投递到死信队列。

有关这些代码的详细信息,请参阅 消息和原因码

使用说明

以下用法说明适用于操作码 MQSR_ACTION_PUBLICATION 的使用:

  1. 如果此动词成功完成,那么与指定的预订匹配的保留发布已发送到预订,并且可以使用 MQGET 或 MQCB (使用在创建预订的原始 MQSUB 动词上返回的 Hobj) 接收这些保留发布。
  2. 如果创建预订的原始 MQSUB 动词所预订的主题包含通配符,那么可以发送多个保留发布。 通过该调用发送的出版物数量记录在SubRqOpts结构的NumPubs字段中。
  3. 如果此动词完成,并且原因码为 MQRC_NO_RETAINED_MSG ,那么当前没有针对指定主题的保留发布。#
  4. 如果此动词完成时原因码为 MQRC_RETAINED_MSG_Q_ERROR 或MQRC_RETAINED_NOT_交付,那么当前存在指定主题的保留发布,但发生了错误,这意味着无法交付这些发布。
  5. 应用程序必须具有主题的当前预订,然后才能进行此调用。 如果预订是在应用程序的先前实例中进行的,并且预订的有效句柄不可用,那么应用程序必须首先使用 MQSO_RESUME 选项调用 MQSUB ,以获取其句柄以在此调用中使用。
  6. 这些发布将发送到注册为与此应用程序的当前预订配合使用的目标。 如果必须将发布内容发送到其他位置,那么必须首先使用带有 MQSO_ALTER 选项的 MQSUB 调用来变更预订。

C 调用

MQSUB (Hconn, Hsub, Action, &SubRqOpts, &CompCode, &Reason)
按如下所示声明参数:
MQHCONN Hconn;     /* Connection handle */
MQHOBJ  Hsub;      /* Subscription handle */
MQLONG  Action;    /* Action requested by MQSUBRQ */
MQSRO   SubRqOpts; /* Options that control the action of MQSUBRQ */
MQLONG  CompCode;  /* Completion code */
MQLONG  Reason;    /* Reason code qualifying CompCode */

COBOL 调用

CALL 'MQSUBRQ' USING HCONN, HSUB, ACTION, SUBRQOPTS, COMPCODE, REASON.
按如下所示声明参数:
** Connection handle
01 HCONN PIC S9(9) BINARY.
** Subscription handle
01 HSUB PIC S9(9) BINARY.
** Action requested by MQSUBRQ
01 ACTION PIC S9(9) BINARY.
** Options that control the action of MQSUBRQ
01 SUBRQOPTS.
COPY CMQSROV.
** Completion code
01 COMPCODE PIC S9(9) BINARY.
** Reason code qualifying COMPCODE
01 REASON PIC S9(9) BINARY.

PL/I 调用

call MQSUBRQ (Hconn, Hsub, Action, SubRqOpts, CompCode, Reason)
按如下所示声明参数:
dcl Hconn fixed bin(31);    /* Connection handle */
dcl Hsub fixed bin(31);     /* Subscription handle */
dcl Action fixed bin(31);   /* Action requested by MQSUBRQ */
dcl SubRqOpts like MQSRO;   /* Options that control the action of MQSUBRQ */
dcl CompCode fixed bin(31); /* Completion code */
dcl Reason fixed bin(31);   /* Reason code qualifying CompCode */

高级汇编程序调用

CALL MQSUBRQ,(HCONN, HSUB, ACTION, SUBRQOPTS,COMPCODE,REASON)
按如下所示声明参数:
HCONN DS F Connection handle
HSUB DS F Subscription handle
ACTION DS F Action requested by MQSUBRQ
SUBRQOPTS CMQSROA , Options that control the action of MQSUBRQ
COMPCODE DS F Completion code
REASON DS F Reason code qualifying COMPCODE