Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javax.batch/jsr352的独占批处理作业_Java_Quartz Scheduler_Spring Batch_Jsr352 - Fatal编程技术网

javax.batch/jsr352的独占批处理作业

javax.batch/jsr352的独占批处理作业,java,quartz-scheduler,spring-batch,jsr352,Java,Quartz Scheduler,Spring Batch,Jsr352,我们有一个执行大量导入和导出的应用程序,基本上是在CSV文件和数据库表之间 由于各种原因(如“遗留代码”),一些导入和导出是冲突的(您不能同时执行它们) 我们正在研究javax.batch。从概念上讲,它非常适合。但我们真正没有发现的是,有可能以某种方式管理我们想要经营的某些工作的“排他性” 有人能提供一个关于这个的指针吗?我们如何使用javax.batch实现独占批处理作业?或者我们应该为此实现自己的JobOperator 更新 我所说的“排他性”是指能够定义某些工作不能并行执行的能力。在最简

我们有一个执行大量导入和导出的应用程序,基本上是在CSV文件和数据库表之间

由于各种原因(如“遗留代码”),一些导入和导出是冲突的(您不能同时执行它们)

我们正在研究
javax.batch
。从概念上讲,它非常适合。但我们真正没有发现的是,有可能以某种方式管理我们想要经营的某些工作的“排他性”

有人能提供一个关于这个的指针吗?我们如何使用
javax.batch
实现独占批处理作业?或者我们应该为此实现自己的
JobOperator

更新

我所说的“排他性”是指能够定义某些工作不能并行执行的能力。在最简单的情况下,这意味着“一次只执行一个作业”。在更复杂的情况下,更复杂的逻辑,如“类型A的作业不能与其他类型A或B的作业一起运行,但C是可以的”。例如,“作业类型”是
jobXmlName
(与作业参数无关)。

JSR-352(和springbatch)都有意避免编排主题。要做到这一点,需要一种特殊的方法来防止这些批处理框架提供的固有灵活性。因此,JSR-352中的
JobOperator
没有任何防止一个作业在另一个作业运行时运行的概念

虽然您可以通过自己定制的
JobOperator
实现这一点,但我不推荐这种方法。相反,您最好将这一层移到更高的位置,进入调用
JobOperator
的人,以便将该类型编排关注点的逻辑与启动作业的实现细节分离。例如,如果您使用调度程序来启动作业,我会将逻辑放在那里,以确定哪些作业可以并行运行,哪些作业不能…而不是放在自定义的
作业操作符中
JobOperator
没有任何防止一个作业在另一个作业运行时运行的概念


虽然您可以通过自己定制的
JobOperator
实现这一点,但我不推荐这种方法。相反,您最好将这一层移到更高的位置,进入调用
JobOperator
的人,以便将该类型编排关注点的逻辑与启动作业的实现细节分离。例如,如果您使用调度程序来启动作业,我会将逻辑放在那里,以确定哪些作业可以并行运行,哪些作业不能…而不是在自定义的
作业操作符中

您能更详细地描述一下“排他性”是什么意思吗?@MichaelMinella Hi Michael,请查看更新。我很感激你的洞察力。你能更详细地描述一下你所说的“排他性”是什么意思吗?@MichaelMinella嗨,迈克尔,请看更新。我很感激你的洞察力。