作为开发人员,我需要将JMS集群化,以便只有一个节点处理任务(任务平均队列消息),并且当一个节点发生故障时,另一个节点可以处理任务。
假设:
目前的应用技术堆栈:
基于Spring 3.2.X和嵌入式ActiveMQ代理的Web应用程序,它在应用程序初始化期间(< amq:broker />)没有持久性。只有此应用程序使用创建的代理应用程序在JBoss 5.0.1上运行。
现在我必须决定我们将使用哪种方法进行上述故障转移群集。我正在考虑切换到JBoss消息传递(由该版本的JBoss提供),但我注意到这个实现已经过时并且存在很多错误。
目前,我在以下几种可能性之间犹豫不决:
以上哪项可能是最好的?我应该采取另一种方式吗?
JMS群集对我来说相对较新,所以欢迎所有评论/评论。
答案 0 :(得分:1)
我决定使用在两台服务器上配置的外部ActiveMQ作为故障转移群集(并且客户端通过ActiveMQ提供的故障转移协议进行连接)。 ActiveMQ部署到JBoss服务器。
我还尝试在Spring中运行嵌入式ActiveMQ配置为故障转移群集,但我遇到了一个常见问题:使用故障转移配置,一个ActiveMQ代理正在等待文件/ db上的锁定,这种情况会暂停Spring上下文的初始化 - 即我不能使用这种方法的原因(第二个节点的应用程序应该工作)。