我们的应用程序使用Spring Integration启动Spring Batch作业。
它的工作原理如下:
1)运行主应用程序类,这将加载Spring应用程序上下文。
2)Spring Integration bean配置为从文件系统读取文件,并将文件放在通道上。
<int-file:inbound-channel-adapter
directory="${...}" channel="channel"
filename-pattern="*.csv" auto-create-directory="false" prevent-duplicates="true">
<int:poller fixed-delay="${...}"></int:poller>
</int-file:inbound-channel-adapter>
3)频道连接到@ServiceActivator
bean。
<int:service-activator input-channel="channel" ref="launcher" />
4)Launcher bean从消息有效负载中获取文件,并启动Spring Batch作业。
问题是在poller fixed-delay
时间结束后,将再次调用启动程序bean,并使用相同的参数启动新的作业。
这会引发JobInstanceAlreadyCompleteException
。
我没有看到告诉轮询者只运行一次。 有什么建议使用Spring Integration和Spring Batch来避免这个问题?
由于