Отключить прослушку во время тестирования - PullRequest
1 голос
/ 14 июля 2020

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

private void setupRoute(String routeId, String inputEndpoint, String outputEndpoint) throws Exception {
        camelContext.getRouteDefinition(routeId)
                .autoStartup(true)
                .adviceWith(camelContext, new AdviceWithRouteBuilder() {
                    @Override
                    public void configure() throws Exception {
                        replaceFromWith(inputEndpoint);
                        interceptSendToEndpoint(outputEndpoint)
                                .skipSendToOriginalEndpoint()
                                .to(MOCK_OUTPUT);

                        //Should stop the route from wiretapping the messages to the archiving routes.
                        if (camelContext.hasEndpoint("direct:archiver") != null) {
                            interceptSendToEndpoint("direct:archiver")
                                    .skipSendToOriginalEndpoint().stop();
                        }
                        if (camelContext.hasEndpoint("direct:elasticSearch") != null) {
                            interceptSendToEndpoint("direct:elasticSearch")
                                    .skipSendToOriginalEndpoint().stop();
                        }
                    }
                });

Я решил, что, проверив camelContext для этих маршрутов, а затем отключив их, если они существуют, это решит проблему. Но при отладке я заметил, что оба этих маршрута не сохраняются как конечные точки в camelContext, поэтому это не работает.

Каким будет правильный способ отключить Wiratap во время тестирования?

1 Ответ

0 голосов
/ 22 июля 2020

Хорошо, я сам разобрался. Просто добавьте это в AdviceWithRouteBuilder:

interceptSendToEndpoint("direct:archiver")
     .skipSendToOriginalEndpoint().stop();
interceptSendToEndpoint("direct:elasticSearch")
     .skipSendToOriginalEndpoint().stop();

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

...