Spring batch 等待异步批处理作业结果的Spring集成配置

Spring batch 等待异步批处理作业结果的Spring集成配置,spring-batch,spring-integration,spring-batch-admin,Spring Batch,Spring Integration,Spring Batch Admin,我使用SpringBatch管理项目,在该项目中,我得到了一个异步处理特定文件夹中文件的作业。目前,我通过批处理管理ui通过传递相关作业参数来运行它 现在,我正试图通过使用文件入站通道适配器自动化这个过程。我已经配置了service activator,它将在收到文件时调用批处理作业。我现在有一个新的要求,在第一个文件上传作业完成后调用另一个批处理作业。为此,我创建了另一个服务激活器,它使用第一个服务激活器的输出通道。但由于批处理作业是异步运行的,所以下一个批处理作业将立即执行。是否有办法让第二

我使用SpringBatch管理项目,在该项目中,我得到了一个异步处理特定文件夹中文件的作业。目前,我通过批处理管理ui通过传递相关作业参数来运行它

现在,我正试图通过使用文件入站通道适配器自动化这个过程。我已经配置了service activator,它将在收到文件时调用批处理作业。我现在有一个新的要求,在第一个文件上传作业完成后调用另一个批处理作业。为此,我创建了另一个服务激活器,它使用第一个服务激活器的输出通道。但由于批处理作业是异步运行的,所以下一个批处理作业将立即执行。是否有办法让第二批作业等待第一批作业完成

我目前的配置是

 <file:inbound-channel-adapter id="filesIn" directory="file:${input.directory}" filename-pattern="*.csv" prevent-duplicates="true">
    <integration:poller id="poller" fixed-delay="10000"/>
</file:inbound-channel-adapter>
<integration:channel id="statusChannel"/>

<integration:service-activator input-channel="filesIn" output-channel="statusChannel"
                               ref="handler" method="process"/>

<bean id="handler" class="AnalysisMessageProcessor"> 
    <property name="job" ref="A-importGlobalSettingsDataJob"/> <!--1st job -->
    <property name="requestHandler" ref="jobMessageHandler"/>
</bean>       

<bean id="jobMessageHandler" class="org.springframework.batch.integration.launch.JobLaunchingMessageHandler">
    <constructor-arg ref="jobLauncher" /> <!--spring batch admins async job launcher -->
</bean>                         

<integration:service-activator input-channel="statusChannel" ref="jobHandler" method="process"/>   
<bean id="jobHandler" class="JobHandler"> <!--This Job handler should get invoked only after the 1st batch job is completed. Currently I am just printing the exit status code of 1st job-->

非常感谢您的帮助。

您基本上有两种选择:

主动轮询作业执行状态 触发第二个Spring集成流的下一批作业部分?在使用侦听器的事件驱动方法中 对于第一种方法,查询Spring批处理参考文档的存储库部分:

第二种选择通常是最好的。因此,我相信您可能希望研究使用Spring批处理JobExecutionListener

请查看以下文档中提供反馈信息的部分:


您基本上有两种选择:

主动轮询作业执行状态 触发第二个Spring集成流的下一批作业部分?在使用侦听器的事件驱动方法中 对于第一种方法,查询Spring批处理参考文档的存储库部分:

第二种选择通常是最好的。因此,我相信您可能希望研究使用Spring批处理JobExecutionListener

请查看以下文档中提供反馈信息的部分: