2015-10-17 96 views
0

我们有以下要求,如何顺流春季XD执行同样的工作

  1. 春天XD,我们有工作让我们假设中的任务名称为MyJob
  2. 将由另一个进程使用调用Spring xd的其余服务,让我们假设进程名称为OutsideProcess(非Spring xd进程)。
  3. 当有一个文件添加到OutsideJob正在侦听的位置(让我们假设FILES_LOC)时,OutsideJob会调用MyJob。

在这种情况下,我们假设MyJob需要5分钟才能完成作业。

  1. 上午10:00,有一个文件复制到FILES_LOC,然后OutsideProcess将立即触发MyJob。 (大约会在上午10:05完成)
  2. 上午10:01,另一个文件复制到FILES_LOC,OutsideProcess将在上午10:01触发另一个MyJob实例。但第二个实例正在排队并在第一个实例完成其执行后开始执行(大约在上午10:05)。

如果我们同时调用不同的作业,它们会同时执行,但同一作业中多个实例不会同时执行。

请让我知道如何同时执行多个实例的相同作业。

在此先感谢。

回答

0

我能想到的唯一事情就是动态部署工作并立即触发它。您可以使用SpringXD Rest模板来即时创建作业定义,并在几秒钟后启动它们。并确保在作业成功完成时取消部署/销毁作业。

另一种解决方案可能是用不同的名称创建几个工作模块实例,并将它们用作从属进程。您可以查询这些作业模块实例的状态,并启动已完成的作业或排队最近启动的作业模块实例。

请记住,如果适用,您可以运行带分区支持的作业。这样你可以更快地完成工作,并能够运行更多的工作。