欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python访问IBM WebSphere MQ队列遇到的问题

程序员文章站 2022-07-13 11:12:27
...

      最近一直在忙一个自动化系统的项目,项目为CS架构,涉及到二十多个服务程序。根据用户需求,这些服务程序都需要用运维系统统一管理、实时监控。

     运维系统主要有两个功能:服务日志的订阅,pingexe。pingexe的大体流程为:1.访问写消息至IBM WebSphere MQ队列管理器的netIN队列。2.MB根据路由规则($Body/MSG/BIZ[contains( $Body/MSG/BIZ/DAT,"APP" )])过滤,转发消息至各APP相应队列。3.各APP反馈消息至netOUT队列。4.利用线程从netOUT读取消息并反回各APP状态。过程中遇到一个很奇怪的问题就是,当我手动发送pingexe消息至netIN队列中时,MB可以将消息转发至相应的队列;但当我用程序发送相同的消息至此队列的时候,消息不能被转发。

      仔细查看了一个程序,终于发现了问题的所在。手动发送的消息与线程发送的消息虽然内容相同,但是格式并不相同。IBM WebSphere 中,存在着自己的消息格式MQ_STRING,而如果我们对发送的消息不加以设置的话,MB并不能辨识我们发送的消息格式,后面的过滤、转发也就没有办法进行了。

      IBM WebSphere 开发过程中,字符集是一个不可忽视的问题。有程序中加入以下几行代码,问题就解决啦:

        #设置md对象

        Sndmd = pymqi.md()
        Sndmd.CodedCharSetId = 1381#1381
        Sndmd.Format = CMQC.MQFMT_STRING

 

        self.qSnd.put(strMsgToQ,Sndmd)#发送

      资料不够啊,各种猜。