Обработка исключений onException () с использованием Apache Camel - PullRequest
0 голосов
/ 19 апреля 2020

Я пытаюсь обработать исключение в моем коде. Ниже приведен код:

public void configure() throws Exception {

        onException(Exception.class).process(new Processor() {

                    public void process(Exchange exchange) throws Exception {
                        System.out.println("handling ex");
                    }
        }).log("Received body").handled(true).end();

        from("file:src/main/resources?fileName=data.csv")
        .process(new MyTransformRevised1())
        .to("file:src/main/resources/?fileName=emp.xml")
        .split(body().tokenizeXML("equityFeeds", null)).streaming().to("jms:queue:xml.inbound.topic");
}

Теперь, если предположить в строке: from("file:src/main/resources?fileName=data.csv"), если файл "data.csv" отсутствует в моих папках ресурсов, то он не должен выбрасывать FileNotFoundException и go в обработчик onException () и вывести «обработка ex»? Также, когда этот код запускается, мой лог-оператор также не выводится на консоль.

В настоящее время он не входит в обработчик onException (). Я не понимаю, почему? Пожалуйста, помогите мне решить эту проблему.

1 Ответ

0 голосов
/ 24 апреля 2020

Как уже прокомментировал @bedla, вы не получите FileNotFoundException , поскольку `from (" file: ... ") создает приемника файлов, который постоянно прослушивает новые файлы в каталоге, который вы настраиваете.

Опция filename действует как фильтр . Это означает, что ваш потребитель файлов обрабатывает только файлы с именем data.csv.

Поэтому, если вы уроните файл с этим именем, он будет использован и перемещен в подпапку (я думаю, что имя по умолчанию - .camel). Затем вы можете добавить еще один data.csv в папку, и он тоже будет использован. Если вы удалите опцию filename, она будет использовать каждый файл, который вы перетаскиваете в папку.

Если вы не хотите выполнять непрерывный импорт файлов из папки, но хотите импортировать указанную c файл как часть вашего рабочего процесса , посмотрите Camel Poll Enrich EIP . Существует простой пример , который импортирует файл .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...