0

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

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

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

亲切的问候,

S. Gökhan Topçu

4

1 回答 1

1

您可以像分库一样将作业路由到每个节点,并且您可以像在一个节点中运行一样处理它。

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

于 2013-08-21T11:05:25.903 回答