使用 Java API 处理 WebSphere MQ 大消息
2009-12-31 00:00:00 来源:WEB开发网核心提示: 程序功能介绍:(1)QMgrSegSender 程序是构造一个长度为505字节的消息并把它写入队列 TESTQ 中,为使 MQ 不能传输505字节的消息,使用 Java API 处理 WebSphere MQ 大消息(3),可以修改队列 TESTQ 的属性“最大消息长度(MAXMSG
程序功能介绍:
(1)QMgrSegSender 程序是构造一个长度为505字节的消息并把它写入队列 TESTQ 中。
为使 MQ 不能传输505字节的消息,可以修改队列 TESTQ 的属性“最大消息长度(MAXMSGL)”为100。
执行结果如下图 1 所示,该消息被队列管理器自动分割成6个片段消息:
图 1 在 WebSphere MQ 资源管理器中浏览分片消息
(2)QMgrSegReceiver 程序是从队列 TESTQ 中读取一个消息。
我们观察执行的结果是它把队列中6个片段消息组成一个完整的大消息取出。
使用队列管理器自动实现消息分片对应用开发人员来讲比较简单,但是需要确保程序在内存使用等方面可以处理完整的大消息。
应用程序实现的消息分片
应用程序实现消息分片是指,在发送方应用程序中事先把大消息切分成多个片段,每一个片段作为一个独立的消息,写入到队列中;在接收方应用程序中,每一个片段作为一个独立的消息被取出,由程序把所有的消息片段组装成一个完整的消息。这种模式适用的场合为,WebSphere MQ 和应用程序两者都不方便处理这么大的单个消息。
一般在发送方程序实现中,我们是把所有的消息片段放在一个同步点中发送,所以需要设置 MQPutMessageOptions 为 MQPMO_SYNCPOINT;同时,我们推荐使用选项 MQPMO_LOGICAL_ORDER,这意味着队列管理器自动维护每个消息片段的偏移量(Offset),否则,需要应用程序自身来设置:
MQPutMessageOptions pmo = new MQPutMessageOptions ();
pmo.options = MQC.MQPMO_LOGICAL_ORDER + MQC.MQPMO_SYNCPOINT;
更多精彩
赞助商链接