Websphere Application Server集群和JMS消息使用情况

时间:2012-01-03 10:40:51

标签: jms websphere ibm-mq cluster-computing

我们正在开发一个将部署到WAS集群的应用程序。该应用程序使用许多JMS(Websphere MQ)队列中的消息,并将结果写入单个数据库。

但是,我们要求在应用程序的深处,一次处理一个给定ID的所有消息。我们目前使用同步集合强制执行此操作,但这在群集中不起作用。

有没有一种方法可以配置应用程序/集群/激活规范来实现这个目标?

1 个答案:

答案 0 :(得分:0)

首先要意识到应用程序必须设计为消除消息亲和力以便横向扩展。对于克服应用程序的设计约束,可以预期消息传输的数量是有限的。基于消息有效载荷内容改变消息传递路由,序列或目的地的处理恰当地是ESB而不是传输的工作。最佳解决方案是使用适合水平扩展的架构重新设计应用程序。

那就是说,一种方法是使用消息组。查找新组的应用程序实例应忽略JMSXGroupID不是1的任何邮件。发送消息的应用程序必须准备好相应地设置组ID和序列号。

实现这一目标的另一种方法是拦截和派遣。程序读取主队列以查找ID的新实例。当它看到一个新ID时,会将该一条消息移动到一个单独的调度队列中。消费应用程序实例都读取调度队列以查找工作。由于此队列中的ID保证是唯一的,因此每个Id都分配给特定的应用程序实例。然后,应用程序使用选择器打开主队列,以便处理ID。生产者应用程序必须将ID设置为消息属性,或者在“关联ID”字段中进行选择,以便进行选择,但不需要管理组。