我有一个情况特定的文件是从到另一个位置复制。 不需要投票的动作将被触发故意。 此外,从该文件将被拿起目录在运行时决定的。
我可以有如下配置:
<int-file:inbound-channel-adapter id="filesIn" directory="@outPathBean.getPath()" channel="abc" filter="compositeFilter" >
<int:poller id="poller" fixed-delay="5000" />
</int-file:inbound-channel-adapter>
<int:channel id="abc"/>
<int-file:outbound-channel-adapter channel="abc" id="filesOut"
directory-expression="file:${paths.root}"
delete-source-files="true" filename-generator="fileNameGenerator" />
filenamegenerator和复合过滤器类被配置为好。
我是新来的春天。 请点我在正确的方向!
您可以使用FireOnceTrigger
在讨论这个答案 ,并开始/根据需要停止适配器。
要到适配器(一个参考SourcePollingChannelAdapter
),注入(或@Autowire
等),它作为一个Lifecycle
豆( start()
/ stop()
等)。
或者你也可以做编程使用整个事情FileReadingMessageSource
,并在讨论这个答案 。
样品用于启动/停止Adapter.incase它是有用的。
SourcePollingChannelAdapter sourcePollingChannelAdapter = (SourcePollingChannelAdapter) context
.getBean("filesIn"); //adapter id in the bean configuration
// Stop
if (sourcePollingChannelAdapter.isRunning()) {
sourcePollingChannelAdapter.stop();
}
// Set Cron Expression if required when start or use any triggers
CronTrigger cronTrigger = new CronTrigger("* * * * * ?");
sourcePollingChannelAdapter.setTrigger(cronTrigger);
// Start
if (!sourcePollingChannelAdapter.isRunning()) {
sourcePollingChannelAdapter.start();
}