ObjectQMgrName (MQCHAR48)
这是定义了 ObjectName 对象的队列管理器的名称。 名称中有效的字符与 ObjectName 的字符相同 (请参阅 ObjectName (MQCHAR48) )。 名称完全为空白,直到第一个空字符或字段结尾表示应用程序所连接的队列管理器 (本地队列管理器)。
以下要点适用于所指示对象的类型:
- 如果
ObjectType是 MQOT_TOPIC , MQOT_NAMELIST , MQOT_PROCESS 或 MQOT_Q_MGR ,那么ObjectQMgrName必须为空白或本地队列管理器的名称。 - 如果
ObjectName是模型队列的名称,那么队列管理器将使用模型队列的属性创建动态队列,并在ObjectQMgrName字段中返回创建队列的队列管理器的名称; 这是本地队列管理器的名称。 只能在 MQOPEN 调用上指定模型队列; 模型队列在 MQPUT1 调用上无效。 - 如果
ObjectName是集群队列的名称,并且ObjectQMgrName为空白,那么使用 MQOPEN 调用返回的队列句柄发送的消息的目标由队列管理器 (或集群工作负载出口 (如果已安装)) 选择,如下所示:- 如果指定了 MQOO_BIND_ON_OPEN ,那么队列管理器将在处理 MQOPEN 调用时选择集群队列的特定实例,并且使用此队列句柄放入的所有消息都将发送到该实例。
- 如果指定了 MQOO_BIND_NOT_FIXED ,那么对于使用此队列句柄的每个连续 MQPUT 调用,队列管理器可以选择目标队列的不同实例 (驻留在集群中的不同队列管理器上)。
如果应用程序需要将消息发送到集群队列的 特定 实例 (即,位于集群中特定队列管理器上的队列实例) ,那么应用程序必须在
ObjectQMgrName字段中指定该队列管理器的名称。 这将强制本地队列管理器将消息发送到指定的目标队列管理器。 - 如果
ObjectName是本地队列管理器所属的队列共享组所拥有的共享队列的名称,那么ObjectQMgrName可以是队列共享组的名称,本地队列管理器的名称或空白; 消息将放置在同一队列上,无论这些值中的任何一个都是指定的。仅在 z/OS®上支持队列共享组。
- 如果
ObjectName是由远程队列共享组 (即,本地队列管理器不属于的队列共享组) 拥有的共享队列的名称,那么ObjectQMgrName必须是队列共享组的名称。 您可以使用属于该组的队列管理器的名称,但如果该特定队列管理器在消息到达队列共享组时不可用,那么这可能会延迟消息。 - 如果要打开的对象是分发列表 (即,
RecsPresent大于零) ,那么ObjectQMgrName必须为空白或为空字符串。 如果不满足此条件,那么调用将失败,原因码为 MQRC_OBJECT_Q_MGR_NAME_ERROR。
当 ObjectName 是模型队列的名称时,这是 MQOPEN 调用的输入/输出字段,在所有其他情况下,这是仅输入字段。 此字段的长度由 MQ_Q_MGR_NAME_LENGTH 提供。 此字段的初始值是 C 中的空字符串,在其他编程语言中为 48 个空白字符。