使用Java API处理WebSphere MQ大消息

WebSphere MQ 中处理大消息的方法

使用过 WebSphere MQ 的读者都知道,WebSphere MQ 对处理的单条消息的大小是有限制的,目前支持的最大消息是100M,而且,随着消息大小的增大,WebSphere MQ 处理的性能也会随之下降。从最佳实践来说,WebSphere MQ 传输大小为几K的消息其效率是最高的。那如何使 WebSphere MQ 能高效的处理大消息呢?

WebSphere MQ 提供了处理大消息的两种方法:消息分片和消息分组。下面我们来看在使用 Java API 编写 WebSphere MQ 程序时如何实现消息分片和分组。

消息分片

消息分片的做法是把应用上一个大的逻辑消息分割成一个一个小的片段,每一个片段作为一个 WebSphere MQ 消息独立传输,通过 MQMD 中 GroupId、 MsgSeqNumber 和 Offset 3 个属性来标识,起始消息的 Offset 值为 0,而最后一个消息则会使用如下标记标识这是最后一个片段:MQMF_LAST_SEGMENT。

具体从实现上来说,消息分片可以细分为两种模式:一是由队列管理器自动实现消息的分片和组装;二是由应用程序来实现消息的分片和组装。下面我们将详细向您介绍这两种实现方式。

队列管理器自动实现的消息分片

顾名思义,队列管理器自动实现的消息分片就是由队列管理器来完成消息的分片和组装。对应用程序来说,不管是发送方还是接收方,它所处理的还是一个完整的大消息,只是在程序中通过设置一些标识来指示队列管理器切分消息后再传输。所以,这种方式适用的场合为,出于传输效率的考虑,WebSphere MQ 不适宜传输大消息,而应用程序可以处理大消息,允许占用大块内存。而且,此种方式对编写应用程序来说也比较简单。

实际在使用 Java API 编程时,对于发送方,发送消息时需要设置消息的 messageFlags 如下:

Msg.messageFlags = MQC.MQMF_SEGMENTATION_ALLOWED;

对于接收方,接收消息时需要设置 MQGetMessageOptions:

MQGetMessageOptions gmo = new MQGetMessageOptions ();

gmo.options = MQC.MQGMO_COMPLETE_MSG;

时间: 2025-01-19 07:27:47

使用Java API处理WebSphere MQ大消息的相关文章

WebSphere MQ收发消息出现错误(AMQ9208 AMQ9206),该如何解决?

问题描述 WebSphereMQ收发消息出现错误,该如何解决?错误消息如下:AMQ9206:Errorsendingdatatohost11.99.212.231.EXPLANATION:AnerroroccurredsendingdataoverTCP/IPto11.99.212.231.Thismaybeduetoacommunicationsfailure.ACTION:ThereturncodefromtheTCP/IP(send)callwas10054X('2746').Record

使用WebSphere MQ Application Activity Trace增加消息的可见性

简介 本文使用多个场景来展示 IBMWebSphereMQ Application Activity Trace 的 潜在用途,包括问题确定和维护 WebSphere MQ 消息的审计跟踪.在各个场景中 将使用两个工具来格式化用于分析的 Application Activity Trace 记录: 命令行工具 amqsact,它作为一个示例随 WebSphere MQ 提供. 在 SupportPac MS0P 中包括的事件和统计数据查看器:WebSphere MQ Explorer – Ext

如何使用WebSphere MQ FTE Ant与最佳实践

开始之前 关于本教程 本教程详细地介绍了 IBM WebSphere MQ FTE 所提供的 Ant 功能以及相关命令与任务,并结合具体实例,演示如何基于 Eclipse 平台开发 Ant 脚本以实现更强大的文件传输功能,最后提出开发 FTE Ant 任务脚本的最佳实践. 目标 希望读者通过本教程,能够了解: WebSphere MQ FTE 中所提供的 Ant 功能: 基于 Eclipse 开发 FTE Ant 任务脚本: 使用 FTE Ant 的最佳实践 先决条件 本教程要求读者了解 Web

websphere mq 报错: MQJE001: 完成代码为 '2',原因为 '2539'。

问题描述 刚在本地上安装了webspheremqv7,安装之后建立了队列管理器.队列和通道然后编写java代码,想mq发送消息,就报这个错误,一下是java代码packagetest.mq;importcom.ibm.mq.*;/**成功的访问mq的java类*/publicclassFirstMqTest{//publicstaticvoidmain(String[]args[]){//FirstMqTestfirst=newFirstMqTest();//first.test();//}pu

websphere-请问哪位大神有WebSphere MQ 7的API文档的,求给发邮箱!在下急需!感激不尽!!

问题描述 请问哪位大神有WebSphere MQ 7的API文档的,求给发邮箱!在下急需!感激不尽!! 请问哪位大神有WebSphere MQ 7的API文档的,求给发邮箱!在下急需!感激不尽!! 解决方案 邮箱地址:315889690@qq.com

基于WebSphere MQ的收发消息程序

摘 要:本文从以下几个方面简述了IBM公司的商业通信中间件WebSphere MQ,首先解释了消息.队列和队列管理器的意义,在此基础上通过图示阐述了WebSphere MQ在进行通信时所采用的通信机制,以及此通信机制和通信的各应用程序之间的关系.接着通过一个实例来说明在使用Java编写程序时,如何向队列写入消息.最后简单的介绍了一下MQ的优点及其发展前景. 关键词:通信中间件,队列,队列管理器,MQ WebSphere MQ(以下简称MQ)是IBM公司享有盛誉的商业通信中间件.它被世界范围的许多

IBM WebSphere Cast Iron与WebSphere MQ Telemetry Transport协作实现业务消息推送

基于物联网的 WebSphere MQ Telemetry Transport(简称 MQTT)相关技术在云计算和移动设备之间架起一道桥梁,在低带宽和不稳定的移动互联网中为您提供可靠的网络服务. 云计算.移动互联网.物联网是当前最炙手可热的几个关键词,也是未来最具发展潜力的几个关键技术.云计算可以为人们提供强大的计算能力和存储能力,能够有效地解决移动设备计算能力不足和存储量小的局限性,然而实现这一切的前提是拥有良好的网络环境,包括稳定的链接和高速的传输条件.然而当前移动互联网正处于起步阶段,无法

使用WAS V7中的WebSphere MQ消息提供程序,第2部分: 使用通道出口

简介 IBM WebSphere Application Server V7 中的 IBM WebSphere MQ 消息提供程 序提供对基于 Java 通道出口的完整支持.道出口是运行在 IBM WebSphere MQ 通道生命周期中被指定点上的用户代码.通道出口有许多可能的用法,包括审计.安全.压 缩.转换等等. 之前的 WebSphere Application Server 版本中,通道出口没有得到完整的支持,必须通过 定制属性配置.在 WebSphere Application Se

java微信开发API第二步 获取和回复消息_java

微信开发API如何获取和回复消息,下面就为大家进行介绍 一.说明 * 本示例根据微信开发文档:http://mp.weixin.qq.com/wiki/home/index.html最新版(4/3/2016 5:34:36 PM )进行开发演示. * 编辑平台:myeclipse10.7+win32+jdk1.7+tomcat7.0  * 服务器:阿里云 windows server 2008 64bits * 平台要求:servlet使用注解方式,平台要求:j2ee6.0+.jdk6.0+.t