我有一个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秒后的下一次轮询将传输第二个文件,依此类推。我希望所有三个文件都在一次轮询中传输,如果其他程序在输入目录中生成了更多文件,则下一次轮询将传输。谁能帮忙实现这一目标吗?