我有两个相同的,独立的JBoss 5.1服务器。我正在编写一个应用程序,该应用程序定期唤醒以处理队列,该队列作为Oracle数据库中的一个表实现。
伪码是:
我的问题是:如何确保一个行不会被处理两次(导致两个帖子)?
我是否可以利用JavaEE注释,或者内置到JBoss中的锁定机制?
理想的解决方案将导致应用程序以相同的方式部署到两个服务器;也就是说,相同的应用程序驻留在两个节点中。
发布于 2013-06-19 20:46:22
您可以对多个使用者使用JMS队列。
如果配置正确,每个消息将只传递给一个使用者,JMS提供者将在多个使用者之间“负载平衡”。
发布于 2013-06-19 21:06:18
如果您不能使用JMS队列(在本例中这应该是一种自然的选择),则可以使用。它的工作方式类似于集群范围的单例,当服务器发生活动单例崩溃时,单例在第二台服务器上被激活。
在您的示例中,单例bean可以在两个服务器(本地服务器和远程服务器)之间分离工作,因此不需要使用任何锁。
我在JBoss 7.1上使用过ha-singleton,但是这个特性也适用于JBoss5.x (检查这里)。
https://stackoverflow.com/questions/14290887
复制相似问题