是否有任何理智的方法来处理sftp端点的身份验证失败?
我有一个带有sftp端点的camel路由,特别是它将文件移动到sftp。当sftp位置不可用时,我想:
不幸的是,SftpOperations一直在重试。在身份验证失败的情况下(如果部署应用程序的人在属性文件中输入错误,则很容易发生这种情况)这意味着重复尝试使用错误的凭据。如果只是密码错误,可能会导致用户被阻止。
答案 0 :(得分:0)
在我的具体情况下,我决定在sftp端点发生错误时我根本不会重试。这是通过在路由配置中添加以下内容来实现的:
&maximumReconnectAttempts=0&throwExceptionOnConnectFailed=true&consumer.bridgeErrorHandler=true
第一次尝试后路线现在失败了。 在更一般的情况下,如果要处理不同的异常(请参阅this问题),可以像这样使用onException:
from(route.getDownloadFromUri())
.routeId(route.getRouteId())
.routePolicy(getRoutePolicy())
.onException(JSchException.class)
.maximumRedeliveries(2)
.handled(true)
.log(LoggingLevel.ERROR, LOG, "!!!! Caught JSchException")
.to(SEND_EMAIL_ROUTE)
.end()
.onException(Throwable.class)
.maximumRedeliveries(5)
.handled(true)
.log(LoggingLevel.ERROR, LOG, "Error moving file ${file:name}: ${exception}")
.to(SEND_EMAIL_ROUTE)
.end()
.onException(IgnoreException.class) // Do nothing, just end processing so routePolicy onEchangeDone is executed
.handled(true)
.end()