2013-08-21 83 views
0

我有一些使用SAP Java Scheduler在SAP Java系统上运行的批处理作业。不幸的是,我还没有遇到任何文档说明如何防止定期工作的并发执行。我所看到的只是“下一次会执行一个新的工作实例”。这破坏了我的fi-fo处理逻辑,所以我需要找到一种方法来防止它。如果调度程序API有办法检查相同的作业执行情况,这将得到解决,但还没有看到一个例子。批处理作业 - 防止并发

作为一般的体系结构方法,其他方法似乎是使用数据库表(用于标记当前执行的指示器表)或JNDI参数(在作业开始时将首先检查)。我也可以“尝试”使用静态整数,但这会使群集实例失败。该系统符合J2EE5并支持EJB 3.0,因此“singleton EJB”也不可用。我可以设置一个bean的最大池大小,并可能实现类似的结果。

我想听听你如何使用不同架构实现这一目标的意见。

亲切的问候,

S.格克汗Topcu的

+1

你可以在单个线程池中运行这些任务吗?这避免了并发性。 –

回答

1

你可以路由的作业就像分贝分片的每一个节点,你可以处理它,就像在一个节点上运行。

或者您必须使用中心节点,如db或memory cache或zookeeper来防止在不同节点上运行相同的作业;

+0

调度程序使用内部JMS队列,文档说它将始终运行在单个节点上 - 所以集群问题已解决,我可以使用静态布尔值。工作是否简单! – GTware