Как вызвать верблюжий маршрут, который читает файл? - PullRequest
0 голосов
/ 29 июня 2018

У меня есть верблюжий маршрут для чтения файла, как показано ниже:

@Component
public class MessageRoute extends RouteBuilder {

    public static final String ROUTE_ID = "message.route";
    public static final String ROUTE_URI = "{{message.route.uri}}";

    @Override
    public void configure() throws Exception {

        from("file:://target/test.txt")
                .convertBodyTo(String.class)
                .process(exchange -> {
                    log.info("Body {}", exchange.getIn().getBody(String.class));
                });
    }
}

Теперь вопрос в том, как позвонить по этому маршруту? Моя конечная цель состоит в том, чтобы позвонить по телефону продюсером и обработать содержимое файла.

Я не смог найти ничего об этом на Документах Camel

Кроме того, я попытался использовать pollEnrich, как указано в в этом ответе , но во время отладки выполнение вообще не доходит до агрегатора.

Я был бы миллион долларов благодарен за любое решение, предложение или идею.

Ответы [ 2 ]

0 голосов
/ 30 июня 2018

Я на самом деле пытался вызвать этот маршрут из другого маршрута или каскадировать его внутри маршрута. Я нашел это работает:

public static final String FILE_ROUTE_ID = "file.route";
public static final String FILE_ROUTE_URI = "{{file.route.uri}}";

@Override
public void configure() throws Exception {

    from(FILE_ROUTE_URI)
            .routeId(FILE_ROUTE_ID)
            .log(LoggingLevel.INFO, "Header {}", String.valueOf(simple("${header.purpose}")))
            .from("file:apache-camel-spring-boot?fileName=printing.key&noop=true")
            .convertBodyTo(String.class)
            .process(exchange -> {
                log.info("Processing file . . .");
                KeyBody keyBody = new KeyBody(exchange.getIn().getBody(String.class));
                exchange.getIn().setBody(keyBody);
            });
}

Спасибо всем за внимание! Ура! * * 1004

0 голосов
/ 30 июня 2018

Что именно вы хотите проверить? Файловый компонент уже протестирован Camel. Для тестирования процессоров и bean-компонентов, задействованных в вашем маршруте, вам в основном не нужен файловый компонент, поэтому замена части from на, т. Е. direct:start через рекомендацию вашего маршрута, вероятно, является рекомендуемым способом.

Если вы настаиваете на тестировании файлового компонента, который работает с файлами или каталогами, вы должны записать тестовые файлы в тестовый каталог в вашем тесте, а затем начать свой маршрут и посмотреть, правильно ли используются и обрабатываются файлы. JUnit предоставляет TemporaryFolder, который может помочь вам при создании и очистке тестовых каталогов. Вы можете увидеть мой ответ на аналогичный вопрос , чтобы увидеть, как это можно сделать с помощью Camel.

...