用于命名 IBM MQ 对象的规则

IBM® MQ 对象名具有最大长度并且区分大小写。 并非每个对象类型都支持所有字符,许多对象都有关于名称唯一性的规则。

有许多不同类型的 IBM MQ 对象,并且每种类型的对象都可以具有相同的名称,因为它们存在于不同的对象名称空间中: 例如,本地队列和发送方通道都可以具有相同的名称。 但是,一个对象不能与同一名称空间中的另一个对象具有相同的名称:例如,本地队列不能与模型队列具有相同的名称,发送方通道不能与接收方通道具有相同的名称。

以下 IBM MQ 对象存在于单独的对象名称空间中:
  • 认证信息
  • 通道
  • 客户机通道
  • 侦听器
  • 名称列表
  • 进程
  • 队列
  • 服务
  • 存储类
  • 预订
  • Topic

对象名称的字符长度

通常, IBM MQ 对象名的长度最多可以为 48 个字符。 此规则适用于以下对象:
  • 认证信息
  • 集群
  • 侦听器
  • 名称列表
  • 进程定义
  • 队列
  • 队列管理器
  • 服务
  • 预订
  • Topic
存在以下限制:
  1. [z/OS]z/OS® 系统上,队列管理器最多必须为 4 个字符,并且只能为大写字符和数字字符。
  2. 通道对象名和客户机连接通道名的最大长度为 20 个字符。 请参阅 定义通道 以获取有关通道的更多信息。
  3. 主题字符串最多可以为 10240 个字节。 所有 IBM MQ 对象名都区分大小写。
  4. 预订名称最多可以为 10240 字节,并且可以包含空格。
  5. 存储类名的最大长度为 8 个字符。
  6. CF 结构名称的最大长度为 12 个字符。

对象名称中的字符

IBM MQ 对象名的有效字符为:
个字符之后 限制
大写 A-Z
  • None
小写 a-z
  • 在 MQSC 脚本中,带有小写字符的名称必须用单引号括起。 这将防止将小写字符转换为大写。
  • 使用 EBCDIC 片假名的系统不能在对象名中使用小写 a-z 字符。
  • [z/OS]z/OS 系统上使用小写字符时可能存在限制,例如,队列管理器名称不能包含小写字符。
  • [IBM i]IBM i 系统上使用 CL 命令时,必须将带有小写字符的名称括在单引号中。 这将防止将小写字符转换为大写。
数字 0-9
  • None
句点 (.)
  • None
下划线 (_)
  • [UNIX、Linux、Windows、IBM i]None
  • [z/OS]避免使用带有前导或尾部下划线的名称,因为 IBM MQ for z/OS 操作和控制面板无法处理这些名称。
正斜杠 (/)
  • [Windows]Windows 系统上,队列管理器名称的第一个字符不能是正斜杠。
  • [IBM i]IBM i 系统上使用 CL 命令时,必须将包含正斜杠的名称括在单引号中。
  • [z/OS]None
百分号 (%)
  • [UNIX、Linux、Windows]None
  • [z/OS]如果要将 RACF® 用作 IBM MQ for z/OS的外部安全性管理器,请勿在对象名中使用% ,因为在使用 RACF 通用概要文件时,这些名称不会包括在安全性检查中。
  • [IBM i]IBM i 系统上使用 CL 命令时,必须将包含百分号的名称括在单引号中。
还有一些关于对象名上的字符的一般规则:
  1. 不允许前导空白或嵌入空白。
  2. 不允许使用本地语言字符。
  3. 任何小于完整字段长度的名称都可以用空格填充到右边。 队列管理器返回的所有短名称总是用空格填充到右边。

队列名称

队列的名称有两个部分:
  • 队列管理器的名称
  • 队列管理器已知的队列的局部名

队列名称的每个部分都有 48 个字符长。

要引用本地队列,可以省略队列管理器的名称 (通过将其替换为空白字符或使用前导空字符)。 但是, IBM MQ 返回到程序的所有队列名称都包含队列管理器的名称。

[z/OS]共享队列 (可供其队列共享组中的任何队列管理器访问) 不能与同一队列共享组中的任何非共享本地队列同名。 此限制避免了应用程序在打算打开本地队列时误打开共享队列的可能性,反之亦然。 共享队列和队列共享组仅在 IBM MQ for z/OS上可用。

要引用远程队列,程序必须在完整队列名称中包含队列管理器的名称,或者必须存在远程队列的本地定义。

当应用程序使用队列名称时,该名称可以是本地队列的名称 (或一个队列的别名) ,也可以是远程队列的本地定义的名称,但应用程序不需要知道哪些内容,除非它需要从队列中获取消息 (当队列必须是本地队列时)。 当应用程序打开队列对象时, MQOPEN 调用会执行名称解析函数以确定要在哪个队列上执行后续操作。 这一点的重要意义在于,应用程序不依赖于在队列管理器网络中的特定位置定义的特定队列。 因此,如果系统管理员在网络中重新定位队列并更改其定义,那么不需要更改使用这些队列的应用程序。

保留对象名

以以下对象开头的对象名SYSTEM.为队列管理器定义的对象保留。 您可以使用 AlterDefineReplace 命令来更改这些对象定义以适合您的安装。 为 IBM MQ 定义的名称在 队列名称中完整列出。

[z/OS]IBM MQ for z/OS上,保留耦合设施应用程序结构名称 CSQSYSAPPL。