UserIdentifier (MQCHAR12)
UserIdentifier 指定发起消息的应用程序的用户标识。 队列管理器将此信息视为字符数据,但不定义其格式。
接收到消息后,请在后续 MQOPEN 或 MQPUT1 调用的 ObjDesc 参数的 AlternateUserId 字段中使用 UserIdentifier ,以对 UserIdentifier 用户而不是执行打开操作的应用程序执行授权检查。
- 在 z/OS®上,如果指定了 MQOO_ALTERNATE_USER_AUTHORITY 或 MQPMO_ALTERNATE_USER_AUTHORITY 选项,那么队列管理器将使用 MQOPEN 或 MQPUT1 调用的
ObjDesc参数中的AlternateUserId。 如果未指定相关选项,那么队列管理器将使用从环境中确定的用户标识。 - 在其他环境中,队列管理器始终使用根据环境确定的用户标识。
- 在 z/OS上,队列管理器使用:
- 对于 MVS (批处理) ,这是 JES JOB 卡或启动式任务中的用户标识
- 对于 TSO ,在作业提交期间传播到作业的用户标识
- 对于 CICS®,这是与任务关联的用户标识
- 对于 IMS,用户标识取决于应用程序类型:
- 针对:
- 非消息 BMP 区域
- 非消息 IFP 区域
- 未 发出成功 GU 调用的消息 BMP 和消息 IFP 区域
- 针对:
- 已 发出成功 GU 调用的消息 BMP 和消息 IFP 区域
- MPP 区域
- 与消息关联的注册用户标识
- 逻辑终端 (LTERM) 名称
- 区域 JES JOB 卡中的用户标识
- TSO 用户标识
- PSB 名称
- 针对:
- 在 IBM® i上,队列管理器使用与应用程序作业关联的用户概要文件的名称。
- 在 UNIX 系统上,队列管理器使用:
- 应用程序的登录名
- 进程的有效用户标识 (如果没有可用的登录)
- 与事务关联的用户标识 (如果应用程序是 CICS 事务)
- 在 Windows 系统上,队列管理器使用已登录用户名的前 12 个字符。
此字段通常是队列管理器生成的输出字段,但对于 MQPUT 或 MQPUT1 调用,您可以使此字段成为输入/输出字段并指定 UserIdentification 字段,而不是让队列管理器生成此信息。 如果您不希望队列管理器为 MQPUT 或 MQPUT1 调用生成 UserIdentifier 字段,请在 PutMsgOpts 参数中指定 MQPMO_SET_IDENTITY_CONTEXT 或 MQPMO_SET_ALL_CONTEXT,并在 UserIdentifier 字段中指定用户 ID。
对于 MQPUT 和 MQPUT1 调用,如果在 PutMsgOpts 参数中指定了 MQPMO_SET_IDENTITY_CONTEXT 或 MQPMO_SET_ALL_CONTEXT ,那么这是输入/输出字段。 将废弃字段中空字符后面的任何信息。 队列管理器将空字符和任何后续字符转换为空白。 如果未指定 MQPMO_SET_IDENTITY_CONTEXT 或 MQPMO_SET_ALL_CONTEXT ,那么此字段在输入时将被忽略,并且是仅输出字段。
成功完成 MQPUT 或 MQPUT1 调用后,此字段包含随消息一起传输的 UserIdentifier (如果将其放入队列)。 如果保留消息,那么这将是 UserIdentifier 的值 (请参阅 MQPMO_RETAIN 的描述以获取有关保留发布的更多详细信息) ,但在将消息作为发布内容发送给订户时,不会将此值用作 UserIdentifier ,因为它们提供的值将覆盖发送给订户的所有发布内容中的 UserIdentifier 。 如果消息没有上下文,那么该字段完全为空白。
这是 MQGET 调用的输出字段。 此字段的长度由 MQ_USER_ID_LENGTH 给出。 此字段的初始值是 C 中的空字符串,以及其他编程语言中的 12 个空白字符。