- MQ キューから一連のメッセージを受信し、これをファイルに書き込み、ファイルを入力として春のバッチ ジョブを開始する必要があるという問題があります。
これを行う 1 つの方法は、新しいファイルをポーリングするファイル ポーラーを持つ Spring Integration を少し使用することです。
<file:inbound-channel-adapter id="filePoller"
channel="filesAreComing"
directory="file:${input.directory}"
filename-pattern="test*" />
file message( java.io.File ) を( String ) に適応させfile nameます。これは、Spring Batch が必要とするものです。これは、Spring Batch Admin からすでに利用可能な JobLauncher アダプターを使用して実行できます。
@ServiceActivator
public JobLaunchRequest adapt(File file) throws NoSuchJobException {
JobParameters jobParameters = new JobParametersBuilder().addString(
"input.file", file.getAbsolutePath()).toJobParameters();
return new JobLaunchRequest(job, jobParameters);
}
それを a ( aとJobLaunchRequestの単なるホルダー)にラップし、この要求を [メッセージとして] に送信します。JobJobParametersJobLaunchingMessageHandler
<service-activator input-channel="jobLauncher">
<beans:bean class="org.springframework.batch.integration.launch.JobLaunchingMessageHandler">
<beans:constructor-arg ref="jobLauncher" />
</beans:bean>
</service-activator>
それは仕事を始めるでしょう。
「input.file」は、実行時にバインドされるパラメーターです (したがって #{...} ):
<bean id="reader" class="org.springframework.batch.item.file.FlatFileItemReader" scope="step">
<property name="resource" value="#{jobParameters[input.file]}" />
... line mapper and other props
</bean>