如何在Spring xd

时间:2015-10-17 17:43:29

标签: spring-xd

我们有以下要求,

  1. 在Spring xd中,我们有一个工作让我们假设工作名称为MyJob
  2. 将使用spring xd的其余服务由另一个进程调用,让我们假设进程名称为OutsideProcess(非spring xd进程)。
  3. 当一个文件被添加到OutsideJob正在监听的位置(假设为FILES_LOC)时,OutsideJob会调用MyJob。
  4. 在这种情况下,我们假设MyJob需要5分钟才能完成作业。

    1. 上午10:00,有一个文件复制到FILES_LOC,然后OutsideProcess将立即触发MyJob。 (大约将在上午10:05完成)
    2. 上午10:01,另一个文件被复制到FILES_LOC,然后OutsideProcess将在10:01 AM再触发一个MyJob实例。但是第二个实例正在排队并在第一个实例完成执行后开始执行(大约在上午10:05)。
    3. 如果我们同时调用不同的作业,它们会被同时执行,但同一个作业中的多个实例并没有得到同时执行。

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

      提前致谢。

1 个答案:

答案 0 :(得分:0)

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

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

请记住,如果适用,您可以运行具有分区支持的作业。通过这种方式,您可以更快地完成工作并能够运行更多工作。