【问题标题】:How can I send a large message to WebSphere MQ through JMS?如何通过 JMS 向 WebSphere MQ 发送大消息?
【发布时间】:2012-07-04 23:45:06
【问题描述】:

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

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

【问题讨论】:

    标签: size jms ibm-mq


    【解决方案1】:

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

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

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

    【讨论】:

    • 这都是真的。但是,我指的限制是在使用 JMS 接口时,在那种情况下,我发现无法配置超过 2 MB 的限制
    • 为什么你认为有 2MB 的限制?它不是 JMS 规范的一部分,WMQ 类也没有施加这个限制。您在尝试放置大型消息时是否遇到错误?如果是这样,那么可能是队列、通道和/或 QMgr 中的 MAXMSGL 调整强加了限制。
    • 查看原帖中的链接:
    • 这是来自链接的 sn-p:
    • 2 MB 的消息是支持的最大大小。虽然可以更改通道上的最大消息大小,但不支持。如果用户想要发送大于 2MB 的消息,他们将需要使用外部 WebSphere® MQ。
    【解决方案2】:

    这听起来可能很费力,但它是一个解决方案:

    1. 获取您的消息内容,将其转换为字节数组。
    2. 将字节数组拆分为 n 个子数组,每个子数组约为
    3. 启动 JMS 事务并在 ByteMessage 中发送每个子数组,增加组计数:

    例如

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

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

    真的很琐碎.....

    这是better example

    【讨论】:

    • 虽然这是很好的代码高尔夫,但问题的前提是错误的。希望我们能够解决必须是配置或调整的根本原因,而不是通过围绕它进行编程来“解决”它。这个问题大致相当于“我怎样才能让我的车超过 45MPH 的内置限制?”并参考 Model-T Ford 的规格表作为现代汽车不能超过 45MPH 的证据。继续类比,这个答案大致相当于“增加锅炉,以便获得更多蒸汽压力。”
    • 这是优秀代码高尔夫。此外,WebSphere MQ 明确支持此方法:publib.boulder.ibm.com/infocenter/wmqfte/v7r0/index.jsp?topic=/…。 Model-T 福特有锅炉吗?
    • 正确 - MQFTE 将文件拆分、发送和重新组合消息。但它正在解决一个不同的问题。 OP 的前提是 IBM 的 JMS 不支持大于 2MB 的 msgs,这不仅在今天不正确,而且在编写引用的 Technote 时仅适用于与 WAS 捆绑的 WMQ!我完全赞成一个好的编码挑战,只要它解决了一个真正的问题或者每个人都明白这是一个学术练习。在这种情况下,OP 真正相信极限是真实的。我们不应该帮助解决配置/调整问题,而不是让他在对产品的错误理解下继续工作吗?
    • 在进一步的研究中,我发现 Model-T 没有锅炉,尽管当时很多汽车都有。但这更能说明问题 - 如果我们要解决一个不存在的问题,那么一个不存在的解决方案似乎是完美的方法。
    • 尼古拉斯,仅供参考,我看到这篇文章并注意到最后的链接不再有效。我曾要求 IBM 在某个地方重新发布它,但据我所知,他们从未这样做过。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    • 2011-09-12
    • 2016-01-11
    • 2015-11-17
    • 2019-06-16
    • 2021-03-06
    • 1970-01-01
    相关资源
    最近更新 更多