如何通过JMS向WebSphere MQ发送大型消息?

时间:2011-04-29 03:58:04

标签: size jms ibm-mq

IBM WebSphere MQ JMS接口存在2 MB的内置限制 http://www-01.ibm.com/support/docview.wss?uid=swg21221260

有没有办法绕过这个限制?

2 个答案:

答案 0 :(得分:4)

许多年前,适用于与WAS一起分发的WMQ版本的限制回到了V5.1.1。如果这是问题,升级到当前版本的WMQ将解决它。 WMQ的当前版本是V7.0.1。 V6.0.2仍然是最新版本,但将于2012年9月停止使用.V6& V7可以发送和接收高达100MB的消息,但WMQ本身默认为4MB开箱即用。如果需要大于4MB的消息但是JMS不是现代版本的限制,则需要调整QMgr,队列和通道的参数。

WMQ Java / JMS手册未特别提及最大大小,因为它与本机WMQ最大长度100MB相同。但是,WMQ V6 Performance Report为最高64MB的JMS消息提供了基准。

阻止您发送3MB消息的任何内容都不是WMQ在消息大小方面的JMS实现的限制。如果您已经检查了所有通道和队列以及QMgr上的MAXMSGL,那么它就不那么明显了,但配置。

答案 1 :(得分:0)

这可能听起来很艰巨,但这是一个解决方案:

  1. 记录您的消息内容,将其转换为字节数组。
  2. 将字节数组拆分为〜< n 子数组。每个1.9 MB。
  3. 启动JMS事务并在ByteMessage中发送每个子数组,增加组计数:
  4. e.g。

       message.setStringProperty("JMSXGroupID", groupId);
       message.setIntProperty("JMSXGroupSeq", i);
    

    在接收方,您实现了一个选择器,以便在收到第一条消息后立即获取组中的所有消息。检索组中的所有消息(希望你得到它们),正确排序它们,重新创建大字节数组,解组它,然后你就完成了。

    真的很琐事.....

    这是better example