我确实设置了一个spring批处理作业,它在单个JVM上运行得很好。但我需要将其部署到集群环境中。我正在使用spring任务调度器来调度作业。有没有办法在集群环境中做到这一点,如果一个节点宕机了,另一个节点应该会接手。要部署到的服务器是Webspehere。
发布于 2014-10-21 18:58:53
SpringBatch不支持任何集群执行方式。如果你想要你的任务被集群,你应该检查它的产品,我可以建议你看看hazelcast。
发布于 2014-10-21 20:55:39
两个建议:
通过Apache Camel Idempotent repository实现的
这两种方法都将确保您的任务只需使用一次即可完成。
第一种方法需要(繁琐的) Quartz DB设置,但是然后您可以直接连接您的非集群Websphere webapps。
第二种方法不需要持久化存储,通过Apache Camel包装器使设置变得轻而易举。
发布于 2014-11-07 15:12:28
我终于让它与启动spring批处理作业的EJB持久计时器一起工作。这些EJB计时器的事务类型已定义为Bean事务,因此它不是容器管理的。Websphere调度程序负责使用EJB计时器进行集群。因此,spring批处理作业一次只在一台服务器上启动。
https://stackoverflow.com/questions/26492788
复制