有没有办法通过代码启动文件:inbound-Channel-Adapter?
我遇到了将特定文件从一个位置复制到另一个位置的情况。轮询不是必需的,因为该操作将被故意触发。此外,在运行时决定从中选取文件的目录。
我可以进行如下配置:
<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" />
还配置了文件名生成器和复合筛选器类。
我对春天不熟悉。请给我指出正确的方向!!
解决方案
您可以使用this answer中讨论的FireOnceTrigger
,并根据需要启动/停止适配器。
获取对适配器的引用(aSourcePollingChannelAdapter
)、插入(或@Autowire
等。)它作为Lifecycle
Bean(start()
/stop()
等)。
或者您可以使用FileReadingMessageSource
以编程方式完成整个操作,如this answer中所述。
相关文章