Camel 2.18.0 pollEnrich连接异常未使用OnException块捕获

时间:2018-06-27 12:48:17

标签: apache-camel camel-ftp spring-camel

我正在尝试使用pollEnrich在循环中下载具有动态文件名的文件,当pollEnrich出现连接异常时,即使在pollenrich声明之后我们也无法docatch,它也不会在onException块中处理。

我还尝试在端点uri中使用throwExceptionOnConnectFailed = true。不是没有用。

这有什么解决方法吗?

onException(Exception.class)    
.log( "${exception.stacktrace}")
.end();

from("direct:DownloadFiles")
.loop(exchangeProperty("FileCount"))
.pollEnrich().simple("sftp://testeruser:password@localhost:24?
    move=Processed&antInclude=*${property.soNumber}*.*").timeout(30000)
.to("TARGET SFTP endpoint")
.end();

1 个答案:

答案 0 :(得分:0)

默认情况下,骆驼忽略连接问题

} catch (Exception e) {
        loggedIn = false;

        // login failed should we thrown exception
        if (getEndpoint().getConfiguration().isThrowExceptionOnConnectFailed()) {
            throw e;
        }
}

因此,您必须在SFTP使用者上启用选项throwExceptionOnConnectFailed。在您的情况下,这将是

.pollEnrich()
     .simple("sftp://testeruser:password@localhost:24?move=Processed&throwExceptionOnConnectFailed=true&antInclude=*${property.soNumber}*.*")
     .timeout(30000)

我知道您在问题中写道,您尝试了该选项但未成功,但是在我的测试中,正是这个选项(根据上面的Camel代码)确定ConnectException是到达错误处理程序还是到达错误处理程序。忽略。