是否有一个启动文件方式:入站通道适配器通过代码?(Is there a way to start t

2019-10-21 05:39发布

我有一个情况特定的文件是从到另一个位置复制。 不需要投票的动作将被触发故意。 此外,从该文件将被拿起目录在运行时决定的。

我可以有如下配置:

<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和复合过滤器类被配置为好。

我是新来的春天。 请点我在正确的方向!

Answer 1:

您可以使用FireOnceTrigger在讨论这个答案 ,并开始/根据需要停止适配器。

要到适配器(一个参考SourcePollingChannelAdapter ),注入(或@Autowire等),它作为一个Lifecycle豆( start() / stop()等)。

或者你也可以做编程使用整个事情FileReadingMessageSource ,并在讨论这个答案 。



Answer 2:

样品用于启动/停止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();
        }


文章来源: Is there a way to start the file:inbound-channel-adapter through code?