Исключения соединения pollEnrich для Camel 2.18.0 не перехватываются блоком OnException - PullRequest
0 голосов
/ 27 июня 2018

Я пытаюсь загрузить файл с динамическими именами файлов, используя pollEnrich в цикле, когда в pollEnrich есть исключение для соединения, оно не было обработано в блоке onException, даже если я не могу отсканировать нас после статистики полленриха.

Я также попытался использовать throwExceptionOnConnectFailed = true в конечной точке URI. Не бесполезно.

есть ли какое-нибудь решение?

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 голосов
/ 11 июля 2018

По умолчанию 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)

Я знаю, что вы пишете в своем вопросе, что вы опробовали эту опцию безуспешно, но в моем тесте именно эта опция решает (согласно приведенному выше верблюжьему коду), если ConnectException достигает обработчика ошибок или игнорируется.

...