给出以下文件入站:
IntegrationFlows.from(s -> s
.file(directory, new LastModifiedFileComparator())
.patternFilter(inputFileNamePattern)
.preventDuplicates(),
e -> e.poller(p -> p.trigger(filePollerTrigger))
)
以及在超过某个时间的情况下抛出异常的触发器,如何接收抛出的异常?
它会出现在流异常通道或入站特定错误处理程序中吗?
在java dsl中处理它的正确方法是什么?
提前致谢。
答案 0 :(得分:0)
trigger.nextExecutionTime()
引发的异常导致轮询任务停止,或者如果听起来更好则不重新安排轮询任务:
public ScheduledFuture<?> schedule() {
synchronized (this.triggerContextMonitor) {
this.scheduledExecutionTime = this.trigger.nextExecutionTime(this.triggerContext);
if (this.scheduledExecutionTime == null) {
return null;
}
long initialDelay = this.scheduledExecutionTime.getTime() - System.currentTimeMillis();
this.currentFuture = this.executor.schedule(this, initialDelay, TimeUnit.MILLISECONDS);
return this;
}
}
正如您在代码中看到的那样,它完全等同于触发器中的null
。我们刚退出重新安排的循环。
考虑在自定义Trigger
中实现异常处理逻辑作为该目标的包装器。例如ErrorHandlingTrigger
。