MQ....
这两天真的非常忙碌。。
在开发自己系统与公司CSC、SAP的接口。
尤其是CSC接口调用,真是很麻烦。。用到一个IBM WEBSPHERE MQ 的接口。
目的就是将自己系统的数据通过MQ(queue manager)的报文格式发送到CSC的接收端实现数据传送
MQ的报文长的十分奇特,是一个规定好各个位的长字符串。
首先在本地拼好一个串,然后发送到对方,要求很严格,串有问题,就会报错
重要问题是:我这边接收返回串的时候总是乱码。。。
查了很久这个问题,发现是MQ接收的字符集设置,以及接收方式的设置问题,现记录在案,以备不时之需:
//4set get message options
MQGetMessageOptions gmo = new MQGetMessageOptions();
gmo.options = gmo.options + MQC.MQGMO_SYNCPOINT;
gmo.options = gmo.options + MQC.MQGMO_WAIT;
gmo.options = gmo.options + MQC.MQGMO_FAIL_IF_QUIESCING;
gmo.options = gmo.options + MQC.MQGMO_CONVERT;
gmo.waitInterval = 60000;
挺重要的一步,设置MQ接收参数。貌似我出错就有这个地方的问题
int size = inMsg.getMessageLength();
byte[] p = new byte[size];
inMsg.readFully(p);
strmsg = new String(p);
接收方式很重要,其他的接收方式会报cp1388的错
MqReceive mr = new MqReceive();
mr.setCCSID(1381);//此处设置也很重要,1388,1386都会出乱码
mr.setHostName("10.1.1.41");
mr.setPort(1422);
mr.setQManager("QM_FE02");
mr.setReceiveChannel("CSCSVRTOFE02");
mr.setReceiveQueue("LQ_REPLY");
String recMsg = mr.receive();
貌似ccsid的设置与接收方式是配合使用的,也有看到网上有人用obj方法发送接收,没试过。。以后有机会再试。。