我使用 Spring Batch 管理项目,在该项目中我有一个异步处理来自特定文件夹的文件的工作。目前我通过传递相关的作业参数通过批处理管理 ui 运行它。
现在,我正在尝试通过使用文件入站通道适配器来自动化这个过程。我已经配置了服务激活器,它会在收到文件时调用批处理作业。我现在有一个新要求,即在第一个文件上传作业完成后调用另一个批处理作业。为此,我创建了另一个服务激活器,它使用第一个服务激活器的输出通道。但是由于批处理作业是异步运行的,所以下一个批处理作业会立即执行。有没有办法让第二批作业等到第一批作业完成。
我目前的配置是
<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-->
任何帮助将不胜感激。