WEB开发网
开发学院软件开发Java 使用 Java API 处理 WebSphere MQ 大消息 阅读

使用 Java API 处理 WebSphere MQ 大消息

 2009-12-31 00:00:00 来源:WEB开发网   
核心提示: 程序功能介绍:AppSegSender 程序是使用一个 for 循环,构造一个完整消息的三个消息片段,使用 Java API 处理 WebSphere MQ 大消息(5),分别写入队列 TESTQ 中,AppSegReceiver 程序是从队列 TESTQ 中循环读取消息片段,我们推荐使用选项

程序功能介绍:

AppSegSender 程序是使用一个 for 循环,构造一个完整消息的三个消息片段,分别写入队列 TESTQ 中。

AppSegReceiver 程序是从队列 TESTQ 中循环读取消息片段,根据其逻辑顺序以及是否是最后一个消息片段来组装完整的消息。

相对于队列管理器器自动实现消息分片的方式,应用程序实现消息分片略显复杂,但是它能够处理更大的消息。

消息分组

从实现手段上来讲,消息分组和消息分片非常类似,但二者有着完全不同的业务意义。在消息分片中,虽然每一个消息片段都作为一个独立的消息进行传输,但只有收集到所有的消息片段组成一个完整的消息之后才有业务意义,单独的一个消息片段是没有任何业务意义的。从这一点上讲,我们是由于技术上处理大消息有困难,才想到把大消息进行切分的。而消息分组则不同,它的每一个成员消息都是一个具有业务意义的独立消息,只是由于某些需要,比如,组内消息有明确的先后顺序,等等,才把这批消息作为一组进行传输。

在实际实现中,组内的消息是通过 MQMD 中 GroupId 和 MsgSeqNumber 2个属性来标识,而最后一个消息则会标记这是组内的最后一个消息(MQMF_LAST_MSG_IN_GROUP)。

与消息分片类似,一般在发送方程序中,我们是把同一组的所有消息放在一个同步点中发送,所以需要设置 MQPutMessageOptions 为 MQPMO_SYNCPOINT;同时,我们推荐使用选项 MQPMO_LOGICAL_ORDER,这意味着队列管理器自动维护每个消息的序列号(MsgSeqNumber),否则,需要应用程序自身来设置:

MQPutMessageOptions pmo = new MQPutMessageOptions ();

pmo.options = MQC.MQPMO_LOGICAL_ORDER + MQC.MQPMO_SYNCPOINT;

上一页  1 2 3 4 5 6  下一页

Tags:使用 Java API

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接