在我的具体情况下,我决定在 sftp 端点出现错误的情况下根本不重试。这是通过在路由配置中添加以下内容来实现的:
&maximumReconnectAttempts=0&throwExceptionOnConnectFailed=true&consumer.bridgeErrorHandler=true
路线现在在第一次尝试后失败。在更一般的情况下,如果您想处理不同的异常(请参阅此问题),您可以像这样使用 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()