一次读取Apache Camel文件组件中的所有文件

时间:2019-09-12 12:46:22

标签: spring-boot java-8 apache-camel

我有一个Spring Boot调度程序,它调用Apache Camel Route。路由读取目录,并将该目录中的文件传输到另一个目录。下面是调度程序代码:

@Component
public class Scheduler {

    @Autowired private ProducerTemplate producerTemplate;

    @Scheduled(cron = "#{@getCronValue}")
    public void scheduleJob() {
        System.out.println("Scheduler executing");
        producerTemplate.sendBodyAndHeaders("direct:transferFile", null, null);
        System.out.println("Scheduler complete");
    }
}

下面是Apache Camel路线

@Component
public class FileTransferRoute extends RouteBuilder {

    @Autowired private BeforeProcessor beforeProcessor;

    @Override
    public void configure() {
        errorHandler(defaultErrorHandler()
            .maximumRedeliveries(3)
            .redeliverDelay(1000)
            .retryAttemptedLogLevel(LoggingLevel.WARN));

        from("direct:transferFile")
            .log("Route reached")
            .process(beforeProcessor)
            .log("Input endpoint: ${exchangeProperty.inputEndpoint}")
            .log("Output endpoint: ${exchangeProperty.outputEndpoint}")
            .pollEnrich().simple("${exchangeProperty.inputEndpoint}")
            .recipientList(exchangeProperty("outputEndpoint"))
        .end();
    }
}

处理器仅在Exchange上设置两个属性。此处,每个轮询中将传输一个文件,而下一个轮询将传输下一个文件。例如,如果目录中有三个文件,则第一次轮询仅传输第一个文件,而20秒后的下一次轮询将传输第二个文件,依此类推。我希望所有三个文件都在一次轮询中传输,如果其他程序在输入目录中生成了更多文件,则下一次轮询将传输。谁能帮忙实现这一目标吗?

0 个答案:

没有答案