[英]Module clustering and JMS
我有一个在JVM
(没有容器)中独立运行并通过JMS
与其他模块通信的模块。 我的模块既是一个队列中的生产者,又是另一个队列中的消费者。 然后,出于HA和工作量方面的原因,我需要对该模块进行群集,并且我可能要与Terracotta + Hibernate一起对我的实体进行群集。 当前,当我的应用程序启动时,它会启动一个线程(通过Executors.newSingleThreadExecutor()
)作为使用者(我可以在必要时附加实际代码示例)。
我在这里读书的问题理解的是,如果我刚开始我的模块上N
不同JVMs
然后N
不同的用户将被创建并在队列中的每个消息将到达N
用户。 我想做的是只处理其中的一条消息(目前,让我们说哪个不重要),因此实际上使我能够一次处理N
消息。
如何/应该这样做? 我会偏离轨道吗?
顺便说一句,我正在使用OpenMQ
作为实现,但是我不知道这是否有意义。
谢谢你的帮助
集群环境中消息处理的典型案例。 这就是我要做的。
使用广播消息(基于频道)代替队列。 对于点对点通信有用的队列不是很有效。 设置消息的有效性,直到消费者之一使用它为止。 这样,其他消费者甚至不会看到该消息,只有一个消费者会使用它。
看一下JGroups 。 您可以考虑实现模块/订户以使用jgroup进行所需的同步。 JGroups提供可靠的多播通信。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.