Мой верблюжий маршрут пытается забрать некоторые файлы из sftp, передать их в сеть и удалить их из sftp.Если sftp недоступен после 3 попыток, я хочу, чтобы маршрут отправлял электронное письмо с предупреждением администратора о проблеме.
По этой причине мой адрес sftp имеет следующие параметры:
maximumReconnectAttempts=2&throwExceptionOnConnectFailed=true&consumer.bridgeErrorHandler=true
Если местоположение в сети недоступно, я хочу, чтобы маршрут уведомлял администратора, а не удалял файлы из sftp.По этой причине я установил .handled (false) в onException.
Однако при сбое подключения к sftp агрегирование также завершается неудачно, и сообщения электронной почты не поступают.Я сделал минималистский пример ниже:
/configure
onException(Throwable.class)
.retryAttemptedLogLevel(LoggingLevel.WARN)
.redeliveryDelay(1000)
.handled(false)
.log(LoggingLevel.ERROR, LOG, "XXX - Error moving files")
.to(AGGREGATEROUTE)
.end();
from(downloadFrom)
.to(to)
.log(LoggingLevel.INFO, LOG, "XXX - Moving file OK")
.to(AGGREGATEROUTE);
from(AGGREGATEROUTE)
.log(LoggingLevel.INFO, LOG, "XXX - Starting aggregation.")
.aggregate(constant(true), new GroupedExchangeAggregationStrategy())
.completionFromBatchConsumer()
.completionTimeout(10000)
.log(LoggingLevel.INFO, LOG, "XXX - Aggregation completed, sending mail.");
В журналах я вижу:
16:02| ERROR | CamelLogger.java 156 | XXX - Error moving files
Затем журналы для исключения, возникающего во время соединения.
И затемэто:
16:02| ERROR | FatalFallbackErrorHandler.java 174 | Exception occurred while trying to handle previously thrown exception on exchangeId: ID-LP0641-1552662095664-0-2 using: [Pipeline[[Channel[Log(proefjes.camel_cursus.routebuilders.MoveWithPickupExceptions)[XXX - Error moving files]], Channel[sendTo(direct://aggregate)]]]].
16:02| ERROR | FatalFallbackErrorHandler.java 172 | \--> New exception on exchangeId: ID-LP0641-1552662095664-0-2
org.apache.camel.component.file.GenericFileOperationFailedException: Cannot connect to sftp://user@mycompany.nl:22
at org.apache.camel.component.file.remote.SftpOperations.connect(SftpOperations.java:149)
Я не вижу «XXX - Начало агрегации».который я ожидал увидеть в журнале.Возникает ли какая-то ошибка перед агрегацией?Точка останова для агрегата (*, *) никогда не достигается.