0

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

我还尝试在端点 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();
4

1 回答 1

1

默认情况下,Camel 会忽略连接问题

} catch (Exception e) {
        loggedIn = false;

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

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

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

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

于 2018-07-11T06:09:01.147 回答