Spring Integration Java DSL:文件入站异常传播

时间:2017-05-16 16:43:06

标签: java spring spring-integration

给出以下文件入站:

IntegrationFlows.from(s -> s
                        .file(directory, new LastModifiedFileComparator())
                        .patternFilter(inputFileNamePattern)
                        .preventDuplicates(),
                      e -> e.poller(p -> p.trigger(filePollerTrigger))
)

以及在超过某个时间的情况下抛出异常的触发器,如何接收抛出的异常?

它会出现在流异常通道入站特定错误处理程序中吗?

在java dsl中处理它的正确方法是什么?

提前致谢。

1 个答案:

答案 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