MQ消息头中用户id的默认值

Posted

技术标签:

【中文标题】MQ消息头中用户id的默认值【英文标题】:Default value of user id in MQ message header 【发布时间】:2014-09-19 13:41:42 【问题描述】:

在我的应用程序中,我将消息发送到 Websphere MQ 队列。在应用程序中,用户可以灵活地在消息中设置用户 ID。但是我的问题是,由于该参数在我的应用程序中是可配置的,如果用户没有设置它,将从哪里获取值?

我浏览了以下链接,但对于如果用户 ID 未在应用程序级别设置,将为用户 ID 设置什么值一无所知。

    http://www-01.ibm.com/support/knowledgecenter/SSFKSJ_7.0.1/com.ibm.mq.csqzaw.doc/jm41030_.htm

    How to set MQMD ApplicationID field via JMS API?

感谢任何帮助。

【问题讨论】:

【参考方案1】:

MQMD.UserIdentifier 字段由队列管理器设置为与放置消息的连接 (hConn) 关联的用户 ID。您可以通过查看 DISPLAY CONN 或 MQ Explorer 中的 Applications... 来了解此用户 ID。

如果您的应用程序使用本地绑定运行,也就是说,它与队列管理器在同一台机器上,并且它选择使用套接字,那么队列管理器将使用的用户 ID discover 是运行应用程序进程的用户 ID。

如果您的应用程序使用客户端绑定运行,也就是说,它使用与队列管理器的网络连接,那么队列管理器将使用的用户 ID 是分配给通道连接的 MCAUSER 的用户 ID,可以由 CHLAUTH 规则设置,或安全出口,或从客户端流出等。

如果您的应用程序要在消息的 MQMD 中设置用户 ID,那么应用程序必须告诉队列管理器它将执行此操作,或者 MQMD.UserIdentifier 字段中的任何内容将被上面的内容覆盖。为了告诉队列管理器它想要这样做,应用程序必须在打开队列时使用附加选项MQOO_SET_IDENTITY_CONTEXT,并在放置消息时使用MQPMO_SET_IDENTITY_CONTEXT。 open 选项还要求您有授权才能这样做,+setid 使用时setmqaut

进一步阅读

Message Context Controlling context information

【讨论】:

感谢您的回复。 +1 以获得清晰的解释。

以上是关于MQ消息头中用户id的默认值的主要内容,如果未能解决你的问题,请参考以下文章

java.sql.SQLException:字段 'supplier_id' 没有默认值

具有多个默认值的Javascript Switch语句

如何定义 select 默认不选中任何值

如何在 Android Kitkat 中设置我的短信应用默认值?

将默认消息“验证错误:需要值”更改为“需要值”

字段 'user_id' 没有默认值,但设置为 auto_increment