gpt4 book ai didi

java - 模块集群和 JMS

转载 作者:行者123 更新时间:2023-11-30 11:57:56 25 4
gpt4 key购买 nike

我有一个在 JVM 中独立运行的模块(无容器)并通过 JMS 与其他模块通信.我的模块既是一个队列中的生产者,又是另一个队列中的消费者。然后我需要集群这个模块,出于 HA 原因和工作负载原因,我可能会使用 Terracotta+Hibernate 来集群我的实体。目前,当我的应用程序启动时,它会启动一个线程(通过 Executors.newSingleThreadExecutor() )作为消费者(如果相关和必要,我可以附上实际的代码示例)。

我从阅读这里的问题中了解到,如果我只是在 N 上启动我的模块不同JVMs然后N将创建不同的订阅者并且队列中的每条消息将到达N订户。我想做的是只有其中一个(我们现在说哪个不重要)处理该消息,因此实际上使我能够处理 N一次发送消息。

如何/应该如何做到这一点?我偏离轨道了吗?

顺便说一句,我正在使用 OpenMQ作为我的实现,但我不知道这是否相关。

感谢您的帮助

最佳答案

集群环境下消息处理的经典案例。这就是我要做的。

使用广播消息(基于 channel )代替队列。用于点对点通信的队列不是很有效。设置消息的有效性,直到它被其中一个消费者消费为止。这样,其他消费者甚至不会看到该消息,只有一个消费者会使用它。

关于java - 模块集群和 JMS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3501369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com