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方法发送接收,没试过。。以后有机会再试。。

posted on 2009-12-25 11:44  杨斐  阅读(724)  评论(0编辑  收藏  举报

导航