【问题标题】:Ist there a workaround for JMS / Websphere MQ message segmentation?JMS / Websphere MQ 消息分段是否有解决方法?
【发布时间】:2014-12-30 17:50:57
【问题描述】:

到目前为止,我还没有找到使用 IBM 的 JMS 实现(没有消息分组)读取分段消息的解决方案。另见:is IBM MQ Message Segmentation possible using JMS?

对于尚未接收分段消息的 JMS 客户端是否有任何解决方法?

例如是否可以配置“MQ 服务器组件”以将分段消息重新组合为 JMS 客户端的一条消息?其他想法?

【问题讨论】:

  • 你可以看看骆驼,在端点的内存中聚合消息。这适合你吗?
  • 有详细的链接吗? Camel 支持 websphere mq 分割吗?
  • Camel 建立在更高的层次上。因此,您可以使用 camel.apache.org/jms.html 骆驼从 JMS 队列中提取消息,然后将它们聚合到骆驼聚合器 camel.apache.org/aggregator2.html 中。

标签: jms ibm-mq


【解决方案1】:

如果总重组消息保持在 100MB 以内(即允许的最大消息大小),那么您可以有一个临时队列,其中非 JMS MQ API 应用程序获取并重组消息,然后将重组后的大消息放到一个队列中JMS 应用程序从中获取。这将在它们穿过 MQ 网络时保留较小尺寸的消息,并且在应用程序检索它们之前的最后一点只是较大的(读取效率低下)消息。

但是,如果总重组消息大于 100MB,如果段正在使用中,则可能是这种情况,则上述解决方案将无济于事。

事实上,如果总重组消息大于 100MB,那么无论如何您都无法通过客户端连接发送它,在这种情况下,您需要将应用程序设置为队列管理器的本地应用程序。

如果您是本地队列管理器,那么更改由 JMS 层进行的底层 MQGET 调用的 API 出口也可能是可能的。如果您有本地队列管理器,则只能使用它,因为客户端 API 出口仅在 C 客户端中受支持。无论套接字另一端的客户端类型如何,您都可以通过 SVRCONN 通道,但您不能通过客户端通道发送大于 100MB 的消息,因此如果总重组消息大于通道的MAXMSGL,那么它可以'不被发送。

相关阅读

【讨论】:

  • 您有任何关于“API 退出”的链接吗?为什么我必须在队列管理器本地才能进行 API 出口?
  • 添加了链接和答案文本的进一步解释
猜你喜欢
  • 2010-12-05
  • 2011-12-29
  • 1970-01-01
  • 2019-06-16
  • 1970-01-01
  • 1970-01-01
  • 2012-08-27
  • 2015-04-20
  • 1970-01-01
相关资源
最近更新 更多