2016-09-21 29 views
0

我想确保Spring作业在它仍然运行时不会再次启动。这在单个JVM环境中很简单。但是,如何在集群环境中实现这一点(更具体地说,在JBoss 5.1中 - 我知道有点陈旧;如果解决方案存在于以后的版本中,我也会对这些问题感兴趣)。在群集环境中避免并发在Spring批处理作业中

因此,它应该是所有群集节点中的一种Singleton模式。

我在考虑使用数据库锁或消息队列。有没有更简单/更好的解决方案?

回答

1

您需要同步彼此不知道的线程,因此最简单的方法是在共同的地方共享一些信息。有效的替代品:

  • 共享数据库
  • 共享文件
  • 外部Web服务持有批处理的状态

如果你喜欢使用一个共享的数据库,尝试使用像Redis这样的数据库来提高你的性能。它是一个内存数据库,在磁盘上具有持久性,因此访问批处理过程的状态应该足够快。

+0

非常感谢 - 这证实了我的怀疑,即没有固有的特定于群集的同步机制。感谢您指出Redis--我会研究它。 –