我正在使用HermesJms访问 MQ8 服务器。
后者具有以下配置:
但是,当我尝试通过Hermes提供的相关选项“发现”时,我得到一个2035
,并在队列管理器错误日志中显示以下消息:
AMQ9557: Queue Manager User ID initialization failed for 'pkaramol'.
EXPLANATION:
The call to initialize the User ID 'pkaramol' failed with CompCode 2 and Reason
2035.
请注意pkaramol
是我在运行Hermes的linux机器上登录的本地操作系统用户。
问题:
1)尽管我已禁用CHLAUTH
和CONNAUTH
,但为什么会出现以下错误:
ALTER QMGR CHLAUTH(DISABLED) CONNAUTH(' ')
REFRESH SECURITY TYPE(CONNAUTH)
2)为什么服务器会将pkaramol
视为用户尝试访问队列管理器,尽管我在mquser
和ClientID
字段中明确提供user
HermesJMS?
答案 0 :(得分:1)
我找不到很多关于HermesJMS的文档,但通过一些反复试验我发现如果你单击Discover它不会尊重User
和Password
设置,它会一直向用户发送已登录队列管理器,这就是您没有看到用户mquser
的原因。因为您以运行队列管理器的服务器上不存在的用户pkaramol
运行它,所以会收到以下错误:
AMQ9557: Queue Manager User ID initialization failed for 'pkaramol'.
我还发现,要执行发现,它会使用模型队列SYSTEM.DEFAULT.MODEL.QUEUE
打开一个临时动态队列,并将PCF消息放入SYSTEM.ADMIN.COMMAND.QUEUE
。此外,要发现任何队列详细信息,您必须至少在队列中+inq
和+dsp
。
在您的评论中,您声明已将用户pkaramol
添加到服务器并将其放入mqm
组。虽然这是使其工作的快速方法,但它确实为用户提供了完整的MQ管理员访问权限。您可以为您的实际用户提供以下权限,并且仍然能够发现队列管理器上的所有对象。请将以下单词group
替换为您的用户所属的服务组:
setmqaut -m DMSQM -t qmgr -g group +connect +inq +dsp
setmqaut -m DMSQM -n SYSTEM.ADMIN.COMMAND.QUEUE -t queue -g group +inq +put +dsp
setmqaut -m DMSQM -n SYSTEM.DEFAULT.MODEL.QUEUE -t queue -g group +get +dsp
setmqaut -m DMSQM -n '**' -t queue -g group +inq +dsp
我还注意到,一旦您通过Discover填充队列或手动添加它们,它将使用您指定的用户。
请注意,在CHLAUTH
和CONNAUTH
被禁用的情况下,队列管理器会使用所呈现的任何用户并使用它。您可以启用CONNAUTH
并指定有效的用户和密码,MQ将对其进行身份验证。
由于Discover不遵守用户设置,因此另一个选项是在MCAUSER
的SVRCONN频道上设置mquser
。
答案 1 :(得分:-2)
您需要提供UserId' pkaramol'通过setmqaut命令访问队列管理器和队列的权限。