有没有办法通过代码启动文件:inbound-Channel-Adapter?

2022-06-28 00:00:00 java spring-integration
我遇到了将特定文件从一个位置复制到另一个位置的情况。轮询不是必需的,因为该操作将被故意触发。此外,在运行时决定从中选取文件的目录。

我可以进行如下配置:

<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等。)它作为LifecycleBean(start()/stop()等)。

或者您可以使用FileReadingMessageSource以编程方式完成整个操作,如this answer中所述。

相关文章