【发布时间】:2010-08-17 10:13:46
【问题描述】:
我有一个模块在JVM(无容器)中独立运行,并通过JMS 与其他模块通信。
我的模块既是一个队列中的生产者,又是另一个队列中的消费者。
然后,出于 HA 原因和工作负载原因,我需要对这个模块进行集群,并且我可能会使用 Terracotta+Hibernate 来集群我的实体。
目前,当我的应用程序启动时,它会启动一个线程(通过Executors.newSingleThreadExecutor())作为消费者(如果相关和必要,我可以附加实际的代码示例)。
我从这里阅读的问题中了解到,如果我只是在 N 不同的 JVMs 上启动我的模块,那么 N 将创建不同的订阅者并且队列中的每条消息都会到达N订阅者。
我想做的是只让其中一个(让我们目前说哪个不重要)处理该消息,因此实际上使我能够一次处理 N 消息。
如何/应该如何做到这一点?我是不是偏离轨道了?
顺便说一句,我使用 OpenMQ 作为我的实现,但我不知道这是否相关。
感谢您的帮助
【问题讨论】:
标签: java jms cluster-computing publish-subscribe