更改,复制和创建队列
"更改队列" 命令更改现有队列定义。 复制和创建队列命令创建新的队列定义-复制命令使用现有队列定义的属性值。
| HP Integrity NonStop Server | IBM® i | UNIX 和 Linux® | Windows | z/OS® |
|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
"更改队列" 命令 MQCMD_CHANGE_Q 更改现有 IBM MQ 队列的指定属性。 对于省略的任何可选参数,该值不会更改。
"复制队列" 命令 MQCMD_COPY_Q 创建相同类型的队列定义。 对于未在命令中指定的属性,它使用现有队列定义的属性值。
"创建队列" 命令 MQCMD_CREATE_Q 创建具有指定属性的队列定义。 未指定的所有属性都设置为所创建的队列类型的缺省值。
必需参数 (更改和创建队列)
QName (MQCFST)- 队列名称 (参数标识:
MQCA_Q_NAME)。要更改的队列名称。 字符串的最大长度为
MQ_Q_NAME_LENGTH。
必需参数 (复制队列)
FromQName (MQCFST)- 源队列名称 (参数标识:
MQCACF_FROM_Q_NAME)。指定现有队列定义的名称。
在 z/OS上,队列管理器将搜索具有您指定的名称以及要从中复制的处置 MQQSGD_Q_MGR,MQQSGD_COPY或MQQSGD_SHARED的对象。 如果为QSGDisposition指定了值MQQSGD_COPY,那么将忽略此参数。 在这种情况下,将搜索具有由ToQName和处置MQQSGD_GROUP指定的名称的对象以从中进行复制。字符串的最大长度为
MQ_Q_NAME_LENGTH。 ToQName (MQCFST)- 至队列名称 (参数标识:
MQCACF_TO_Q_NAME)。指定新队列定义的名称。
字符串的最大长度为
MQ_Q_NAME_LENGTH。队列名称必须唯一; 如果存在具有新队列的名称和类型的队列定义,那么必须将
Replace指定为MQRP_YES。 如果存在与新队列具有相同名称和不同类型的队列定义,那么该命令将失败。
必需参数 (所有命令)
QType (MQCFIN)- 队列类型 (参数标识:
MQIA_Q_TYPE)。指定的值必须与要更改的队列的类型匹配。
值可以是以下任意值:MQQT_ALIAS- 别名队列定义。
MQQT_LOCAL- 本地队列。
MQQT_REMOTE- 远程队列的本地定义。
MQQT_MODEL- 模型队列定义。
可选参数 ("更改" , "复制" 和 "创建队列")
BackoutRequeueName (MQCFST)-请参阅 MQSCBOQNAME- 过多的回退重排队列名称 (参数标识:
MQCA_BACKOUT_REQ_Q_NAME)。如果消息回退次数超过
BackoutThreshold的值,那么指定要将其传输到的队列的名称。 该队列不必是本地队列。此时不需要存在回退队列,但在超过
BackoutThreshold值时必须存在回退队列。字符串的最大长度为
MQ_Q_NAME_LENGTH。 BackoutThreshold (MQCFIN)- 回退阈值 (参数标识:
MQIA_BACKOUT_THRESHOLD)。消息在传输到
BackoutRequeueName指定的回退队列之前可以回退的次数。如果稍后减小该值,那么已在队列中回退的消息将至少与新值保留在队列中的次数相同。 如果这些消息再次回退,那么将传输这些消息。
指定 0-999,999,999 范围内的值。
BaseObjectName (MQCFST)- 别名解析为的对象的名称 (参数标识:
MQCA_BASE_OBJECT_NAME)。此参数是对本地队列管理器定义的队列或主题的名称。
字符串的最大长度为
MQ_OBJECT_NAME_LENGTH。 BaseQName (MQCFST)- 别名解析为的队列名称 (参数标识:
MQCA_BASE_Q_NAME)。此参数是定义到本地队列管理器的本地或远程队列的名称。
字符串的最大长度为
MQ_Q_NAME_LENGTH。
CFStructure (MQCFST)
耦合设施结构名称 (参数标识: MQCA_CF_STRUC_NAME)。 此参数仅适用于 z/OS 。指定在使用共享队列时要存储消息的耦合设施结构的名称。 名称:- 不能超过 12 个字符
- 必须以大写字母 (A-Z) 开头
- 只能包含字符 A-Z 和 0-9
字符串的最大长度为
MQ_CF_STRUC_NAME_LENGTH。队列管理器所连接的队列共享组的名称以您提供的名称为前缀。 队列共享组的名称始终为 4 个字符,必要时使用 @ 符号填充。 例如,如果使用名为
NY03的队列共享组并提供名称PRODUCT7,那么生成的耦合设施结构名称为NY03PRODUCT7。 请注意,队列共享组 (在本例中为NY03CSQ_ADMIN) 的管理结构不能用于存储消息。对于本地队列和模型队列,以下规则适用。 如果在Replace参数中使用值为的 "创建队列" 命令,那么规则适用。 如果使用 "更改队列" 命令,那么规则也适用。MQRP_YES- 在
QSGDisposition参数中值为MQQSGD_SHARED的本地队列上,CFStructure无法更改。如果需要更改
CFStructure或QSGDisposition值,那么必须删除并重新定义队列。 要保留队列上的任何消息,必须先卸载消息,然后才能删除队列。 在重新定义队列后重新装入消息,或者将消息移至另一个队列。 - 在
DefinitionType参数中值为MQQDT_SHARED_DYNAMIC的模型队列上,CFStructure不能为空。 - 在具有除
QSGDisposition参数中的MQQSGD_SHARED以外的值的本地队列上,CFStructure的值无关紧要。 对于在DefinitionType参数中具有除MQQDT_SHARED_DYNAMIC以外的值的模型队列,值CFStructure也无关紧要。
对于本地队列和模型队列,当您在Replace参数中使用值为MQRP_NO的 "创建队列" 命令时,耦合设施结构:- 在
QSGDisposition参数中值为MQQSGD_SHARED的本地队列上,或者在DefinitionType参数中值为MQQDT_SHARED_DYNAMIC的模型队列上,CFStructure不能为空。 - 在具有除
QSGDisposition参数中的MQQSGD_SHARED以外的值的本地队列上,CFStructure的值无关紧要。 对于在DefinitionType参数中具有除MQQDT_SHARED_DYNAMIC以外的值的模型队列,值CFStructure也无关紧要。
注: 在可以使用队列之前,必须在耦合设施资源管理 (CFRM) 策略数据集中定义结构。ClusterChannelName (MQCFST)此参数仅在传输队列上受支持。
ClusterChannelName 是将此队列用作传输队列的集群发送方通道的通用名称。 该属性指定哪些集群发送方通道将消息从此集群传输队列发送到集群接收方通道。 (参数标识:
MQCA_CLUS_CHL_NAME。)您还可以手动将传输队列属性 ClusterChannelName 设置为集群发送方通道。 发往通过集群发送方通道连接的队列管理器的消息将存储在识别集群发送方通道的传输队列中, 而不会存储在缺省集群传输队列中。 如果将 ClusterChannelName 属性设置为空白,那么通道在重新启动时将切换至缺省集群传输队列。 缺省队列为
SYSTEM.CLUSTER.TRANSMIT.ChannelName或SYSTEM.CLUSTER.TRANSMIT.QUEUE,这取决于队列管理器 DefClusterXmitQueueType 属性的值。通过在 ClusterChannelName 中指定星号
,您可以将传输队列与一组集群发送方通道关联。 星号可以位于通道名称字符串的开头、结尾或中间任意位置。 ClusterChannelName 的长度限制为 20 个字符:*MQ_CHANNEL_NAME_LENGTH。缺省队列管理器配置是让所有集群发送方通道从单个传输队列
SYSTEM.CLUSTER.TRANSMIT.QUEUE发送消息。 您可以通过更改队列管理器属性 DefClusterXmitQueueType 来更改缺省配置。 该属性的缺省值为 SCTQ。 您可以将值更改为 CHANNEL。 如果将 DefClusterXmitQueueType 属性设置为 CHANNEL,那么每个集群发送方通道将缺省为使用特定集群传输队列SYSTEM.CLUSTER.TRANSMIT.ChannelName。ClusterName (MQCFST)- 集群名称 (参数标识:
MQCA_CLUSTER_NAME)。队列所属的集群的名称。
对此参数的更改不会影响已打开的队列实例。
只有
ClusterName和ClusterNamelist的其中一个结果值可以为非空白; 不能同时为这两个值指定值。字符串的最大长度为
MQ_CLUSTER_NAME_LENGTH。 ClusterNamelist (MQCFST)- 集群名称列表 (参数标识:
MQCA_CLUSTER_NAMELIST)。名称列表的名称,用于指定队列所属的集群的列表。
对此参数的更改不会影响已打开的队列实例。
只有
ClusterName和ClusterNamelist的其中一个结果值可以为非空白; 不能同时为这两个值指定值。 CLWLQueuePriority (MQCFIN)- 集群工作负载队列优先级 (参数标识:
MQIA_CLWL_Q_PRIORITY)。指定集群工作负载管理中队列的优先级; 请参阅 配置队列管理器集群。 该值必须在范围 0-9 中,其中 0 是最低优先级, 9 是最高优先级。
CLWLQueueRank (MQCFIN)- 集群工作负载队列列组 (参数标识:
MQIA_CLWL_Q_RANK)。指定集群工作负载管理中队列的列组。 该值必须在范围 0-9 中,其中 0 是最低优先级, 9 是最高优先级。
CLWLUseQ (MQCFIN)- 集群工作负载使用远程队列 (参数标识:
MQIA_CLWL_USEQ)。指定是否在集群工作负载分发中使用远程队列和本地队列。 值可以是以下任意值:MQCLWL_USEQ_AS_Q_MGR- 在队列管理器的定义上使用
CLWLUseQ参数的值。 MQCLWL_USEQ_ANY- 使用远程队列和本地队列。
MQCLWL_USEQ_LOCAL- 请勿使用远程队列。
CommandScope (MQCFST)
命令作用域 (参数标识: MQCACF_COMMAND_SCOPE)。 此参数仅适用于 z/OS 。指定当队列管理器是队列共享组的成员时如何运行该命令。 可指定下列值之一:- 空白,或者完全省略该参数。 该命令在输入该命令的队列管理器上运行。
- 队列管理器名称。 该命令在您指定的队列管理器上运行,前提是它在队列共享组中处于活动状态。 如果指定的队列管理器名称不是输入该队列管理器的队列管理器,那么必须使用队列共享组环境。 必须启用命令服务器。
- 星号 (*)。 该命令在本地队列管理器上执行,并且还会传递到队列共享组中的每个活动队列管理器。
最大长度为
MQ_QSG_NAME_LENGTH。Custom (MQCFST)- 新功能部件的定制属性 (参数标识:
MQCA_CUSTOM)。
此属性包含作为属性名称和值对的属性值,至少以一个空格分隔。 属性名称/值对的格式为 NAME(VALUE)。 必须使用另一个单引号对单引号进行转义。- CAPEXPRY ( 整数 )
- 在系统中保留最大时间 (以十分之一秒为单位) ,直到使用对象句柄放入消息 (在解析路径上使用此对象打开) ,直到它符合到期处理条件为止。
有关消息到期处理的更多信息,请参阅 强制缩短到期时间。
值可以是下列其中一个值:integer- 该值必须在范围 1 到 999,999,999 之间。
NOLIMIT- 对于使用此对象放入的消息的到期时间没有限制。 这是缺省值。
DefaultPutResponse (MQCFIN)- 缺省放置响应类型定义 (参数标识:
MQIA_DEF_PUT_RESPONSE_TYPE)。此参数指定当应用程序指定MQPMO_RESPONSE_AS_Q_DEF时要用于将操作放入队列的响应类型。 值可以是以下任意值:MQPRT_SYNC_RESPONSE- 同步发出 put 操作,返回响应。
MQPRT_ASYNC_RESPONSE- 异步发出 put 操作,返回 MQMD 字段的子集。
DefBind (MQCFIN)- 绑定定义 (参数标识:
MQIA_DEF_BIND)。该参数指定在 MQOPEN 调用上指定MQOO_BIND_AS_Q_DEF时要使用的绑定。 值可以是以下任意值:MQBND_BIND_ON_OPEN- 绑定由 MQOPEN 调用固定。
MQBND_BIND_NOT_FIXED- 绑定不固定。
MQBND_BIND_ON_GROUP- 允许应用程序请求将一组消息全部分配给同一目标实例。
对此参数的更改不会影响已打开的队列实例。
DefinitionType (MQCFIN)- 队列定义类型 (参数标识:
MQIA_DEFINITION_TYPE)。值可以是以下任意值:MQQDT_PERMANENT_DYNAMIC- 动态定义的永久队列。
MQQDT_SHARED_DYNAMIC- 动态定义的共享队列。 此选项仅在 z/OS 上可用。
MQQDT_TEMPORARY_DYNAMIC- 动态定义的临时队列。
DefInputOpenOption (MQCFIN)- 缺省输入打开选项 (参数标识:
MQIA_DEF_INPUT_OPEN_OPTION)。为打开该队列以进行输入的应用程序指定缺省共享选项。
值可以是以下任意值:MQOO_INPUT_EXCLUSIVE- 打开队列以获取具有独占访问权的消息。
MQOO_INPUT_SHARED- 打开队列以获取具有共享访问权的消息。
DefPersistence (MQCFIN)- 缺省持久性 (参数标识:
MQIA_DEF_PERSISTENCE)。指定队列中消息持久性的缺省值。 消息持久性确定是否在 队列管理器重新启动后保留消息。
值可以是以下任意值:MQPER_PERSISTENT- 消息是持久消息。
MQPER_NOT_PERSISTENT- 消息不是持久消息。
DefPriority (MQCFIN)- 缺省优先级 (参数标识:
MQIA_DEF_PRIORITY)。指定放入队列的消息的缺省优先级。 该值必须在范围 0 到受支持的最大优先级值 (9) 之间。
DefReadAhead (MQCFIN)- 缺省预读 (参数标识:
MQIA_DEF_READ_AHEAD)。指定传递到客户机的非持久消息的缺省预读行为。
值可以是以下任意值:MQREADA_NO- 除非将客户机应用程序配置为请求预读,否则不会预读非持久消息。
MQREADA_YES- 在应用程序请求非持久消息之前,会将这些消息提前发送到客户机。 如果客户机异常结束,或者如果客户机未使用其发送的所有消息,那么可能会丢失非持久消息。
MQREADA_DISABLED- 未对此队列启用非持久消息预读。 无论客户机应用程序是否请求预读,都不会将消息发送到客户机。
DistLists (MQCFIN)- 分发列表支持 (参数标识:
MQIA_DIST_LISTS)。指定是否可以将分发列表消息放在队列上。
注: 此属性由发送消息通道代理程序 (MCA) 设置。 每次发送 MCA 与伙伴队列管理器上的接收 MCA 建立连接时,发送 MCA 都会从队列中除去消息。 此属性通常不是由管理员设置的,尽管在需要时可以设置此属性。此参数在以下环境中受支持: AIX®, HP-UX, IBM i, Solaris, Windows和 Linux。
值可以是以下任意值:MQDL_SUPPORTED- 支持分发列表。
MQDL_NOT_SUPPORTED- 不支持分发列表。
Force (MQCFIN)- 强制更改 (参数标识:
MQIACF_FORCE)。指定当条件使完成该命令会影响打开的队列时,是否必须强制完成该命令。 条件取决于要更改的队列的类型:QALIASBaseQName与队列名称一起指定,并且应用程序打开了别名队列。QLOCAL- 以下任一条件指示本地队列将受影响:
Shareability指定为MQQA_NOT_SHAREABLE,并且有多个应用程序打开了本地队列以进行输入。Usage值已更改,一个或多个应用程序打开了本地队列,或者队列上有一条或多条消息。 (当队列上有消息时,通常不得更改Usage值。 将消息放入传输队列时,这些消息的格式会更改。)
QREMOTE- 以下任一条件指示远程队列将受影响:
- 如果使用传输队列名称或空白指定了
XmitQName,并且应用程序打开了将受此更改影响的远程队列。 - 如果使用队列或队列管理器名称指定了下列任何参数,并且一个或多个应用程序将通过此定义解析为队列管理器别名的队列打开。 参数如下:
RemoteQNameRemoteQMgrNameXmitQName
- 如果使用传输队列名称或空白指定了
QMODEL- 此参数对于模型队列无效。
注: 如果此定义仅用作应答队列定义,那么不需要值值可以是以下任意值:MQFC_YES。MQFC_YES- 强制更改。
MQFC_NO- 请勿强制更改。
- HardenGetBackout(MQCFIN)
- 是否硬化回退计数 (参数标识:
MQIA_HARDEN_GET_BACKOUT)。指定是否固化回退消息的次数。 当已硬化计数时,在 MQGET 操作返回消息之前,会将消息描述符的 BackoutCount 字段的值写入日志。 将该值写入日志可确保该值在队列管理器重新启动时准确无误。注: IBM MQ for IBM i 始终会加强计数,而不考虑此属性的设置。硬化回退计数后,此队列上持久消息的 MQGET 操作的性能会受到影响。
值可以是以下任意值:MQQA_BACKOUT_HARDENED- 将对此队列上的消息的消息回退计数进行硬化,以确保计数准确。
MQQA_BACKOUT_NOT_HARDENED- 此队列上消息的消息回退计数未固化,并且在队列管理器重新启动时可能不准确。
IndexType (MQCFIN)- 索引类型 (参数标识:
MQIA_INDEX_TYPE)。 此参数仅适用于 z/OS 。指定队列管理器维护的索引类型,以加速队列上的 MQGET 操作。 对于共享队列,索引类型确定可以使用哪种类型的 MQGET 调用。 值可以是以下任意值:MQIT_NONE- 无索引。
MQIT_MSG_ID- 使用消息标识对队列建立索引。
MQIT_CORREL_ID- 使用相关标识对队列建立索引。
MQIT_MSG_TOKEN- 重要信息: 此索引类型仅应用于与 IBM MQ Workflow for z/OS 产品配合使用的队列。
MQIT_GROUP_ID- 使用组标识对队列建立索引。
仅当维护了相应的索引类型时,才能使用选择条件来检索消息,如下表所示:
检索选择条件 IndexType必需共享队列 其他队列 无 (顺序检索) 任意 任意 消息标识 MQIT_MSG_ID or MQIT_NONE任意 相关标识 MQIT_CORREL_ID任意 消息和相关标识 MQIT_MSG_ID或MQIT_CORREL_ID任意 组标识 MQIT_GROUP_ID任意 分组 MQIT_GROUP_IDMQIT_GROUP_ID消息令牌 不允许 MQIT_MSG_TOKEN InhibitGet (MQCFIN)- 允许或禁止获取操作 (参数标识:
MQIA_INHIBIT_GET)。值可以是:MQQA_GET_ALLOWED- 允许执行获取操作。
MQQA_GET_INHIBITED- 禁止获取操作。
InhibitPut (MQCFIN)- 允许或禁止放置操作 (参数标识:
MQIA_INHIBIT_PUT)。指定是否可在队列中放入消息。
值可以是以下任意值:MQQA_PUT_ALLOWED- 允许执行放置操作。
MQQA_PUT_INHIBITED- 禁止执行放置操作。
InitiationQName (MQCFST)- 启动队列名称 (参数标识:
MQCA_INITIATION_Q_NAME)。与此队列相关的触发器消息的本地队列。 启动队列必须位于同一队列管理器上。
字符串的最大长度为
MQ_Q_NAME_LENGTH。 MaxMsgLength (MQCFIN)- 最大消息长度 (参数标识:
MQIA_MAX_MSG_LENGTH)。队列中消息的最大长度。 应用程序可以使用该属性的值来确定从队列检索消息时需要的缓冲区大小。 如果更改此值,那么可能会导致应用程序操作不正确。
请勿设置大于队列管理器的
MaxMsgLength属性的值。此参数的下限为 0。 上限取决于环境:- 在 AIX, HP Integrity NonStop Server, HP-UX, IBM i, Solaris, Linux, Windows和 z/OS上,最大消息长度为 100 MB (104,857,600 字节)。
- 在其他 UNIX 系统上,最大消息长度为 4 MB (4,194,304 字节)。
MaxQDepth (MQCFIN)- 最大队列深度 (参数标识:
MQIA_MAX_Q_DEPTH)。队列上允许的最大消息数。注: 其他因素可能导致队列被视为已满。 例如,如果没有可用于消息的存储器,那么显示为已满。指定大于或等于 0 且小于或等于以下值的值:- 999,999,999 (如果队列在 AIX, HP-UX, IBM i, Solaris, Linux, Windows或 z/OS 上)
- 640,000 (如果队列在任何其他 IBM MQ 平台上)。
MsgDeliverySequence (MQCFIN)- 按优先级顺序或顺序传递消息 (参数标识:
MQIA_MSG_DELIVERY_SEQUENCE)。值可以是以下任意值:MQMDS_PRIORITY- 将按优先级顺序返回消息。
MQMDS_FIFO- 按 FIFO 顺序返回消息 (先进先出)。
NonPersistentMessageClass (MQCFIN)- 要分配给放入队列的非持久消息的可靠性级别 (参数标识:
MQIA_NPM_CLASS)。值可以是:MQNPM_CLASS_NORMAL- 只要队列管理器会话的生存期,非持久消息就会持久存在。 在队列管理器重新启动时,将废弃这些属性。 该值为缺省值。
MQNPM_CLASS_HIGH- 队列管理器尝试在队列的生存期内保留非持久消息。 发生故障时,可能仍会丢失非持久消息。
此参数仅在本地队列和模型队列上有效。 它在 z/OS上无效。
ProcessName (MQCFST)- 队列的进程定义的名称 (参数标识:
MQCA_PROCESS_NAME)。指定 IBM MQ 进程的局部名,该进程标识发生触发器事件时要启动的应用程序。- 如果队列是传输队列,那么进程定义包含要启动的通道的名称。 对于 AIX, HP-UX, Linux, IBM i, Solaris, Windows和 z/OS上的传输队列,此参数是可选的。 如果未指定此参数,那么将从为
TriggerData参数指定的值中获取通道名称。 - 在其他环境中,进程名称必须为非空白才能发生触发器事件,尽管可以在创建队列后进行设置。
字符串的最大长度为
MQ_PROCESS_NAME_LENGTH。 - 如果队列是传输队列,那么进程定义包含要启动的通道的名称。 对于 AIX, HP-UX, Linux, IBM i, Solaris, Windows和 z/OS上的传输队列,此参数是可选的。 如果未指定此参数,那么将从为
PropertyControl (MQCFIN)- 属性控制属性 (参数标识:
MQIA_PROPERTY_CONTROL)。指定使用带有MQGMO_PROPERTIES_AS_Q_DEF选项的 MQGET 调用从队列中检索消息时如何处理消息属性。 值可以是以下任意值:MQPROP_COMPATIBILITY- 如果消息包含前缀为 mcd., jms., usr. 或 mqext.的属性,那么所有消息属性都将通过
MQRFH2头传递到应用程序。 否则,将废弃消息的所有属性 (消息描述符 (或扩展) 中包含的属性除外) ,并且应用程序无法再访问这些属性。 MQPROP_NONE- 在将消息发送到远程队列管理器之前,将从消息中除去该消息的所有属性。 不会除去消息描述符或扩展中的属性。
MQPROP_ALL- 将消息发送到远程队列管理器时,该消息的所有属性都包含在该消息中。 这些属性 (消息描述符 (或扩展) 中的属性除外) 放置在消息数据中的一个或多个
MQRFH2头中。 MQPROP_FORCE_MQRFH2- 无论应用程序是否指定消息句柄,都将始终在
MQRFH2头中的消息数据中返回属性。 MQPROP_V6COMPAT- 发送应用程序
MQRFH2头时,将接收到该头。 必须使用MQINQMP来检索使用MQSETMP的任何属性集。 它们不会添加到应用程序创建的MQRFH2。 无法使用MQINQMP检索发送应用程序在MQRFH2头中设置的属性。
此参数适用于本地队列,别名队列和模型队列。
QDepthHighEvent (MQCFIN)- 控制是否生成 "队列深度高" 事件 (参数标识:
MQIA_Q_DEPTH_HIGH_EVENT)。"队列深度高" 事件指示应用程序将消息放入队列中。 此事件导致队列上的消息数大于或等于队列深度阈值上限。 请参阅
QDepthHighLimit参数。注: 此属性的值可以隐式更改; 请参阅 可编程命令格式的定义。值可以是:MQEVR_DISABLED- 已禁用事件报告。
MQEVR_ENABLED- 已启用事件报告。
QDepthHighLimit (MQCFIN)- 队列深度的上限 (参数标识:
MQIA_Q_DEPTH_HIGH_LIMIT)。用于比较队列深度以生成 "队列深度上限" 事件的阈值。
此事件指示应用程序将消息放入队列。 此事件导致队列上的消息数大于或等于队列深度阈值上限。 请参阅
QDepthHighEvent参数。该值以最大队列深度
MaxQDepth的百分比表示。 它必须大于或等于 0 且小于或等于 100。 QDepthLowEvent (MQCFIN)- 控制是否生成队列深度下限事件 (参数标识:
MQIA_Q_DEPTH_LOW_EVENT)。"队列深度下限" 事件指示应用程序从队列中检索消息。 此事件导致队列上的消息数小于或等于队列深度下限阈值。 请参阅
QDepthLowLimit参数。注: 此属性的值可以隐式更改。 请参阅 可编程命令格式的定义。值可以是:MQEVR_DISABLED- 已禁用事件报告。
MQEVR_ENABLED- 已启用事件报告。
QDepthLowLimit (MQCFIN)- 队列深度的下限 (参数标识:
MQIA_Q_DEPTH_LOW_LIMIT)。将队列深度与之进行比较以生成 "队列深度下限" 事件的阈值。
此事件指示应用程序从队列中检索消息。 此事件导致队列上的消息数小于或等于队列深度下限阈值。 请参阅
QDepthLowEvent参数。以最大队列深度 (
MaxQDepth属性) 的百分比形式指定值,范围为 0 到 100。 QDepthMaxEvent (MQCFIN)- 控制是否生成 "队列已满" 事件 (参数标识:
MQIA_Q_DEPTH_MAX_EVENT)。"队列已满" 事件指示由于队列已满而拒绝了对队列的 MQPUT 调用。 即,队列深度达到其最大值。
注: 此属性的值可以隐式更改; 请参阅 可编程命令格式的定义。值可以是:MQEVR_DISABLED- 已禁用事件报告。
MQEVR_ENABLED- 已启用事件报告。
QDesc (MQCFST)- 队列描述 (参数标识:
MQCA_Q_DESC)。简要描述对象的文本。
字符串的最大长度为 MQ_Q_DESC_LENGTH。
将由编码字符集标识 (CCSID) 标识的字符集中的字符用于执行命令的消息队列管理器。 此选项确保文本在发送到另一个队列管理器时正确转换。
QServiceInterval (MQCFIN)- 队列服务时间间隔的目标 (参数标识:
MQIA_Q_SERVICE_INTERVAL)。用于比较以生成 "队列服务时间间隔高" 和 "队列服务时间间隔正常" 事件的服务时间间隔。 请参阅
QServiceIntervalEvent参数。指定 0 到 999,999,999 毫秒范围内的值。
QServiceIntervalEvent (MQCFIN)- 控制是生成 "服务时间间隔高" 还是 "服务时间间隔正常" 事件 (参数标识:
MQIA_Q_SERVICE_INTERVAL_EVENT)。当检查指示至少在
QServiceInterval属性指示的时间内未从队列检索消息或未将消息放入队列时,将生成 "队列服务时间间隔高" 事件。当检查指示在
QServiceInterval属性指示的时间内从队列中检索消息时,将生成 "队列服务时间间隔正常" 事件。注: 此属性的值可以隐式更改; 请参阅 可编程命令格式的定义。值可以是以下任意值:MQQSIE_HIGH- 队列服务时间间隔高事件已启用。
- 已启用 "队列服务时间间隔高" 事件,并且
- 队列服务时间间隔正常事件已禁用。
MQQSIE_OK- 队列服务时间间隔正常事件已启用。
- 已禁用 "队列服务时间间隔高" 事件,并且
- 队列服务时间间隔正常事件已启用。
MQQSIE_NONE- 未启用队列服务时间间隔事件。
- 已禁用 "队列服务时间间隔高" 事件,并且
- 还会禁用 "队列服务时间间隔正常" 事件。
QSGDisposition (MQCFIN)
组中对象的处置 (参数标识: MQIA_QSG_DISP)。 此参数仅适用于 z/OS 。指定要对其应用命令的对象的处置 (即,定义对象的位置及其行为方式)。 值可以是以下任意值:QSGDisposition 更改 复制,创建 MQQSGD_COPY对象定义位于执行该命令的队列管理器的页集上。 对象是使用具有参数 MQQSGD_COPY的命令定义的。 驻留在共享存储库中的任何对象或使用具有参数MQQSGD_Q_MGR的命令定义的任何对象都不受此命令影响。该对象是在队列管理器的页集上定义的,该队列管理器使用与 ToQName对象 (用于复制) 或QName对象 (用于创建) 同名的MQQSGD_GROUP对象来执行命令。 对于本地队列,消息存储在每个队列管理器的页集上,并且仅可通过此队列管理器使用。MQQSGD_GROUP对象定义位于共享存储库中。 对象是使用具有参数 MQQSGD_GROUP的命令定义的。 此命令不会影响驻留在执行该命令的队列管理器页集上的任何对象 (对象的本地副本除外)。如果该命令成功,那么将生成以下 MQSC 命令并将其发送到队列共享组中的所有活动队列管理器,以尝试在页集 0 上刷新本地副本:
无论生成的带有DEFINE QUEUE(q-name) REPLACEQSGDISP(COPY)QSGDISP(COPY)的命令是否失败,组对象的更改都将生效。对象定义位于共享存储库中。 仅在共享队列管理器环境中允许此值。 如果定义成功,那么将生成以下 MQSC 命令并将其发送到所有活动队列管理器,以尝试在页集 0 上创建或刷新本地副本:
无论使用DEFINE QUEUE(q-name) REPLACEQSGDISP(COPY)QSGDISP(COPY)生成的命令是否失败, "复制" 或 "创建" 组对象都将生效。MQQSGD_PRIVATE该对象驻留在执行该命令的队列管理器的页集上,并且是使用 MQQSGD_Q_MGR或MQQSGD_COPY定义的。 驻留在共享存储库中的任何对象都不受影响。不允许。 MQQSGD_Q_MGR对象定义位于执行该命令的队列管理器的页集上。 对象是使用具有参数 MQQSGD_Q_MGR的命令定义的。 此命令不会影响共享存储库中的任何对象或此类对象的任何本地副本。 该值为缺省值。在执行命令的队列管理器的页集上定义对象。 该值为缺省值。 对于本地队列,消息存储在每个队列管理器的页集上,并且仅可通过此队列管理器使用。 MQQSGD_SHARED此值仅适用于本地队列。 对象定义位于共享存储库中。 对象是由使用参数 MQQSGD_SHARED的命令定义的。 驻留在执行该命令的队列管理器页集上的任何对象或使用参数MQQSGD_GROUP的命令定义的任何对象都不受此命令的影响。此选项仅适用于本地队列。 对象是在共享存储库中定义的。 消息存储在耦合设施中,可供队列共享组中的任何队列管理器使用。 只有在下列情况下,才能指定 MQQSGD_SHARED:CFStructure为非空白IndexType不为MQIT_MSG_TOKEN- 队列不是下列其中一项:
SYSTEM.CHANNEL.INITQSYSTEM.COMMAND.INPUT
QueueAccounting (MQCFIN)- 控制记帐数据的收集 (参数标识:
MQIA_ACCOUNTING_Q)。值可以是:MQMON_Q_MGR- 将根据队列管理器上
QueueAccounting参数的设置来执行队列的记帐数据收集。 MQMON_OFF- 已禁用队列的记帐数据收集。
MQMON_ON- 如果队列管理器的
QueueAccounting参数值不是MQMON_NONE,那么将为队列启用记帐数据收集。
QueueMonitoring (MQCFIN)- 联机监视数据收集 (参数标识:
MQIA_MONITORING_Q)。指定是否要收集联机监视数据,如果要收集,那么指定收集数据的速率。 值可以是以下任意值:MQMON_OFF- 对此队列关闭联机监视数据收集。
MQMON_Q_MGR- 队列管理器的
QueueMonitoring参数的值由队列继承。 MQMON_LOW- 如果队列管理器
QueueMonitoring参数的值不是MQMON_NONE,那么将开启联机监视数据收集。 此队列的数据收集速率较低。 MQMON_MEDIUM- 如果队列管理器
QueueMonitoring参数的值不是MQMON_NONE,那么将开启联机监视数据收集。 此队列的数据收集速率适中。 MQMON_HIGH- 如果队列管理器
QueueMonitoring参数的值不是MQMON_NONE,那么将开启联机监视数据收集。 此队列的数据收集速率较高。
QueueStatistics (MQCFIN)- 统计信息数据收集 (参数标识:
MQIA_STATISTICS_Q)。指定是否启用统计数据收集。 值可以是以下任意值:MQMON_Q_MGR- 队列管理器的
QueueStatistics参数的值由队列继承。 MQMON_OFF- 统计信息数据收集已禁用
MQMON_ON- 如果队列管理器的
QueueStatistics参数值不是MQMON_NONE,那么将启用统计信息数据收集
此参数仅在 IBM i, UNIX 系统和 Windows上有效。
RemoteQMgrName (MQCFST)- 远程队列管理器的名称 (参数标识:
MQCA_REMOTE_Q_MGR_NAME)。如果应用程序打开远程队列的本地定义,那么
RemoteQMgrName不得为空或应用程序所连接到的队列管理器的名称。 如果XmitQName为空,那么必须有一个名为RemoteQMgrName的本地队列。 该队列用作传输队列。如果此定义用于队列管理器别名,那么
RemoteQMgrName是队列管理器的名称。 队列管理器名称可以是已连接的队列管理器的名称。 如果XmitQName为空,那么当打开队列时,必须有一个名为RemoteQMgrName的本地队列。 该队列用作传输队列。如果此定义用于应答队列别名,那么
RemoteQMgrName是要作为应答队列管理器的队列管理器的名称。字符串的最大长度为
MQ_Q_MGR_NAME_LENGTH。 RemoteQName (MQCFST)- 远程队列管理器上本地已知的远程队列的名称 (参数标识:
MQCA_REMOTE_Q_NAME)。如果此定义用于远程队列的本地定义,那么当发生打开时,
RemoteQName不得为空。如果此定义用于队列管理器别名定义,那么当发生打开时,
RemoteQName必须为空。如果此定义用于应答队列别名,那么此名称是要作为应答队列的队列的名称。
字符串的最大长度为
MQ_Q_NAME_LENGTH。 Replace (MQCFIN)- 替换属性 (参数标识:
MQIACF_REPLACE)。 此参数在 "更改队列" 命令上无效。如果对象存在,那么效果类似于发出 "更改队列" 命令。 它类似于 "更改队列" 命令,在
Force参数上没有MQFC_YES选项,并且指定了所有其他属性。 请特别注意,将保留现有队列中的任何消息。在
Force参数上不带MQFC_YES的 "更改队列" 命令与在Replace参数上带MQRP_YES的 "创建队列" 命令不同。 不同的是, "更改队列" 命令不会更改未指定的属性。 使用MQRP_YES创建队列将设置所有属性。 如果使用MQRP_YES,那么将从缺省定义中获取未指定的属性,并且将忽略要替换的对象的属性 (如果存在)。)如果以下两个参数均为 true ,那么该命令将失败:- 如果您使用的是 "更改队列" 命令,那么该命令将设置需要在
Force参数上使用MQFC_YES的属性 - 对象已打开
在此情况下,在
Force参数上使用MQFC_YES的 "更改队列" 命令成功。如果在 UNIX 系统上的
Scope参数上指定了,并且单元目录中已存在同名的队列,那么该命令将失败。 即使指定了MQSCO_CELLMQRP_YES,该命令也会失败。值可以是以下任意值:MQRP_YES- 替换现有定义。
MQRP_NO- 请勿替换现有定义。
- 如果您使用的是 "更改队列" 命令,那么该命令将设置需要在
RetentionInterval (MQCFIN)- 保留时间间隔 (参数标识:
MQIA_RETENTION_INTERVAL)。根据创建队列的日期和时间,可能需要队列的小时数。
该信息对内务处理应用程序或操作员可用,可以用来确定什么时侯不再需要队列了。 如果队列的保留时间间隔未到期,那么队列管理器不会删除队列,也不会阻止删除队列。 用户负责执行任何必需的操作。
指定 0-999,999,999 范围内的值。
Scope (MQCFIN)- 队列定义的作用域 (参数标识:
MQIA_SCOPE)。指定队列定义的作用域是否超出拥有队列的队列管理器。 如果队列名称包含在单元目录中,那么将执行此操作,以便该单元中的所有队列管理器都知道此操作。
如果将此属性从
MQSCO_CELL更改为MQSCO_Q_MGR,那么将从单元目录中删除队列的条目。无法将模型和动态队列更改为具有单元作用域。
如果从
MQSCO_Q_MGR更改为MQSCO_CELL,那么将在单元目录中创建队列的条目。 如果单元目录中已有同名的队列,那么该命令将失败。 如果未配置支持单元目录的名称服务,那么此命令也会失败。值可以是:MQSCO_Q_MGR- 队列管理器作用域。
MQSCO_CELL- 单元格作用域。
此值在 IBM i上不受支持。
此参数在 z/OS上不可用。
Shareability (MQCFIN)- 队列可以共享,也可以不共享 (参数标识:
MQIA_SHAREABILITY)。指定应用程序的多个实例是否可以打开该队列以进行输入。
值可以是以下任意值:MQQA_SHAREABLE- 队列可共享。
MQQA_NOT_SHAREABLE- 队列不可共享。
StorageClass (MQCFST)
存储类 (参数标识: MQCA_STORAGE_CLASS)。 此参数仅适用于 z/OS 。指定存储类的名称。
字符串的最大长度为
MQ_STORAGE_CLASS_LENGTH。TargetType (MQCFIN)- 目标类型 (参数标识:
MQIA_BASE_TYPE)。指定别名解析为对象的类型。
值可以是以下任意值:MQOT_Q- 对象是队列。
MQOT_TOPIC- 对象是一个主题。
TriggerControl (MQCFIN)- 触发器控制 (参数标识:
MQIA_TRIGGER_CONTROL)。指定触发器消息是否要写入初始队列。
值可以是:MQTC_OFF- 不需要触发器消息。
MQTC_ON- 需要触发消息。
TriggerData (MQCFST)- 触发器数据 (参数标识:
MQCA_TRIGGER_DATA)。指定队列管理器包含在触发器消息中的用户数据。 此数据可供处理启动队列的监视应用程序以及由监视器启动的应用程序使用。
字符串的最大长度为
MQ_TRIGGER_DATA_LENGTH。 TriggerDepth (MQCFIN)- 触发器深度 (参数标识:
MQIA_TRIGGER_DEPTH)。指定 (当
TriggerType为MQTT_DEPTH时) 向启动队列启动触发器消息的消息数。 该值必须在范围 1 到 999,999,999 之间。 TriggerMsgPriority (MQCFIN)- 触发器的阈值消息优先级 (参数标识:
MQIA_TRIGGER_MSG_PRIORITY)。指定消息必须具有的最低优先级,然后才能导致触发事件或对其进行计数。 该值必须在受支持的优先级值范围内 (0 到 9)。
TriggerType (MQCFIN)- 触发器类型 (参数标识:
MQIA_TRIGGER_TYPE)。指定启动触发器事件的条件。 条件为真时,触发器消息发送到初始队列。
值可以是以下任意值:MQTT_NONE- 无触发器消息。
MQTT_EVERY- 针对每条消息触发消息。
MQTT_FIRST- 队列深度从 0 到 1 时触发消息。
MQTT_DEPTH- 超过深度阈值时触发消息。
Usage (MQCFIN)- 用法 (参数标识:
MQIA_USAGE)。指定队列是用于正常使用还是用于将消息传输到远程消息队列管理器。
值可以是以下任意值:MQUS_NORMAL- 正常使用。
MQUS_TRANSMISSION- 传输队列。
XmitQName (MQCFST)- 传输队列名称 (参数标识:
MQCA_XMIT_Q_NAME)。指定要用于以远程队列或队列管理器别名定义为目标的消息的传输队列的局部名。
如果
XmitQName为空,那么将使用与RemoteQMgrName同名的队列作为传输队列。如果定义用作队列管理器别名,并且
RemoteQMgrName是已连接的队列管理器的名称,那么将忽略此属性。如果此定义用作应答队列别名定义,那么也忽略它。
字符串的最大长度为
MQ_Q_NAME_LENGTH。
错误代码 (更改,复制和创建队列)
除了 适用于所有命令的错误代码中显示的值外,此命令可能会在响应格式头中返回以下错误。
Reason (MQLONG)- 值可以是以下任意值:
MQRCCF_CELL_DIR_NOT_AVAILABLE- 单元目录不可用。
MQRCCF_CLUSTER_NAME_CONFLICT- 集群名称冲突。
MQRCCF_CLUSTER_Q_USAGE_ERROR- 集群使用冲突。
MQRCCF_DYNAMIC_Q_SCOPE_ERROR- 动态队列范围错误。
MQRCCF_FORCE_VALUE_ERROR- 强制值无效。
MQRCCF_Q_ALREADY_IN_CELL- 队列存在于单元中。
MQRCCF_Q_TYPE_ERROR- 队列类型无效。
