【发布时间】:2020-12-03 16:15:29
【问题描述】:
我正在尝试在注释中配置以下工作流
带有轮询器(cron 触发器)的入站通道适配器计划每 30 分钟运行一次 轮询文件表单目录,即 10 个文件并移动到阶段目录 对于每个文件需要并行调用一个批处理作业,即 10 个作业应该与轮询的不同文件并行运行
我能够实现所有目标,但无法配置下游执行器通道以并行运行作业。
以下是参考实现。一切都在工作,即作业是在文件之后启动文件,但它需要为不同的文件并行启动作业 感谢您对此的任何帮助
@InboundChannelAdapter (incoming channel, custompoller)
public MessageSource<File> pollFile ( Directory Scanner) {
}
public PollerMetadata custompoller(errorhandler) {
poller.trigger(cron for every 10 minutes)
}
@ServiceActivator(incoming channel)
public MessageHandler filewritertotempdiretory() {
outputchannel(tempdirchannel)
}
@ServiceActivator(inputChannel = tempdirchannel)
public MessageHandler tempdirfilehandler() {
MethodInvokingMessageHandler messageHandler = (launcher class, "methodname");
return messageHandler;
}
Poller Metadata. Read in some other SO that we should not put the task executor when setting poller on cron, is that true ?
also how can i make the messages polled (say 10 messages polled) execute in parallel i.e. add task executor in poller metadata
@Bean
public PollerMetadata preProcessPoller(MessagePublishingErrorHandler errorHandler) {
PollerMetadata poller = new PollerMetadata();
poller.setTrigger(new CronTrigger("0/15 * * * * ?"));
poller.setMaxMessagesPerPoll(Long.valueOf(maxMessagesPerPoll));
errorHandler.setDefaultErrorChannel(errorChannel());
poller.setErrorHandler(errorHandler);
return poller;
}
【问题讨论】:
标签: spring spring-integration integration