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' 没有默认值