低版本IBM MQ API在MQ7.5/8版本上正常运行的程序修改方法

一、测试前准备

所有数据测试前,先替换成对应版本的jar包

二、MQ7.5

MQ7.5跟以前版本的区别是,更加安全的认证,API的option发生了变化。

测试环境:

操作系统

服务器

MQ版本

SUSE 11

192.168.32.144

7.5  fix pack 4/fix pack 5

出错及修改 

  1. 启动时报2046的错误:MQRC_OPTIONS_ERROR

提示取消息时参数有错误,参考IBM官网如下描述:

2046 (07FE) (RC2046): MQRC_OPTIONS_ERROR

Explanation

The Options parameter or field contains options that are not valid, or a combination of options that is not valid.

For the MQOPEN, MQCLOSE, MQXCNVC, mqBagToBuffer, mqBufferToBag, mqCreateBag, and mqExecute calls, Options is a separate parameter on the call.

This reason also occurs if the parameter pointer is not valid. (It is not always possible to detect parameter pointers that are not valid; if not detected, unpredictable results occur.)

For the MQBEGIN, MQCONNX, MQGET, MQPUT, and MQPUT1 calls, Options is a field in the relevant options structure (MQBO, MQCNO, MQGMO, or MQPMO).

Completion Code

MQCC_FAILED

Programmer response

Specify valid options. Check the description of the Options parameter or field to determine which options and combinations of options are valid. If multiple options are being set by adding the individual options together, ensure that the same option is not added twice. For more information, see Rules for validating MQI options.

修改内容:

// 设置取消息时的参数

           MQGetMessageOptions gmo = new MQGetMessageOptions();



           gmo.options = gmo.options + MQC.MQGMO_BROWSE_FIRST;

           gmo.options = gmo.options + MQC.MQGMO_FAIL_IF_QUIESCING;

           gmo.options = gmo.options + MQC.MQGMO_COMPLETE_MSG;

2、发送消息时报2046的错误:MQRC_OPTIONS_ERROR

修改方法 同上:

修改内容:

// 设置取消息时的参数

           MQGetMessageOptions gmo = new MQGetMessageOptions();



           gmo.options = gmo.options + MQC.MQGMO_BROWSE_FIRST;

           gmo.options = gmo.options + MQC.MQGMO_FAIL_IF_QUIESCING;

           gmo.options = gmo.options + MQC.MQGMO_COMPLETE_MSG;
  1. 测试,能否正常发送消息

可以!

三、MQ8.0

更加谨慎的安全认证,强化了集群的能力和相应的API

测试环境:

操作系统

服务器

MQ版本

SUSE 11

192.168.32.202

8.0  fix pack 2

  出错及修改

  1. 启动时报2035的错误:MQRC_NOT_AUTHORIZED

没有正确的安全认证。

解决方法是参考:MQ errors AMQ5540, AMQ5541 and AMQ5542, application did not supply a user ID and password, 2035 MQRC_NOT_AUTHORIZED [MQCSP, CONNAUTH CHCKCLNT(REQDADM)]

主要的操作是:

ALTER AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) AUTHTYPE(IDPWOS) CHCKCLNT(OPTIONAL)

 REFRESH SECURITY TYPE(CONNAUTH)

     2、不能够远程连接到服务器通道AMQ8077

没有权限连接MQ队列管理器。


关闭认证服务:

ALTER QMGR CHLAUTH(DISABLED)

增加服务器通道的用户权限

ALTER CHL(UC_SVR_HE) CHLTYPE(SVRCONN) MCAUSER('mqm')

测试

  1. 测试一,能否正常读取消息队列

     2、测试二,能否正常发送消息

猜你喜欢

转载自blog.csdn.net/heweiyabeijing/article/details/130157089
MQ