IBM MQ中遇到的问题,记录。

版权声明:本文为作者原创,转载请注明出处 https://blog.csdn.net/dataiyangu/article/details/82848888

Caused by: com.ibm.mqservices.MQInternalException: MQJE001: MQException 出现:完成代码是 2,原因为 2195 MQJE018: 协议错误 - 接收到意外的段类型

解决:

什么是ccsid:https://blog.csdn.net/dataiyangu/article/details/82849300

一:MQEnvironment.CCSID = 1381;(在JAVA连接代码时指定一下字符集) 

二:修改字符集设置 

查看ccsid      dis QMGR

一般Unix、Linux平台中MQ默认的字符集为819,而Windows平台为1381,所以你必须改变其字符集,使两边的字符集相同。改变方法: 

1.通过DOS进入MQ的安装目录,进入/bin下。假如要更改的队列管理器为A 

2.用指令“strmqm A”启动队列管理器A。 

3.用指令“runmqsc A”启动A的MQSC。 

4.运行指令“ALTER QMGR CCSID(819)”“end”则修改字符集为819。 

上面的是正常的操作,而我就按照上面的正常的操作怎么也不成功,百思不得其解,中午和同事吃饭,一语点破,原来我也想过这点,但没有实施:因为我的服务是建立在linux系统上的,java代码因为在测试阶段放在mac上,这样就导致,cssid不论怎么配置都不对,最终的决绝方案,除了上面说的,请确保在同一个操作系统下。

更正一下:后来发现在mac上的idea运行又没问题了,我也不知道原因,貌似只要同意ccsid即可,不需要一样的系统。

MQJE001: MQException 出现:完成代码是 2,原因为 2058 MQJE036: 队列管理器拒绝连接尝试

队列管理器的名称大小不对,或名称不对。

dspmq查看全部队列管理器

删除不必要的:

mqm@localhos ~>$endmqm Qm1    停止队列管理器

mqm@localhos ~>$dspmq                  查看当前队列管理器的执行状态,当队列管理器状态变为Ended normally时才能删除

mqm@localhos ~>$dltmqm Qm1       删除队列管理器,它会级联删除该队列管理器中的队列和监听器等等。

Caused by: com.ibm.mqservices.MQInternalException: MQJE001: MQException 出现:完成代码是 2,原因为 2035
MQJE036: 队列管理器拒绝连接尝试

解决:

display qmgr chlauth
     1 : display qmgr chlauth
AMQ8408: Display Queue Manager details.
   QMNAME(Q)                               CHLAUTH(ENABLED)
alter qmgr chlauth(disabled)
     2 : alter qmgr chlauth(disabled)
AMQ8005: WebSphere MQ queue manager changed.

此外还要注意客户端java代码中的对应于服务端的用户名密码是否正确。
 

猜你喜欢

转载自blog.csdn.net/dataiyangu/article/details/82848888