Apache Camel: переключение маршрутов в зависимости от значения - PullRequest
0 голосов
/ 30 января 2019

Я новичок в Apache Camel и пытаюсь найти наилучший способ настройки маршрутов переключения на основе определенных значений.

На данный момент я делаю следующее:

  1. Извлекаем данные из Kafka
  2. Затем обрабатываем их в контроллере и помещаем в заголовок определенное значение(здесь я чувствую, что что-то не так)
  3. Обработайте выходной заголовок контроллера и проверьте значение
  4. Выберите маршрут для движения, основываясь на значении заголовка
this.from("direct:kafka.scenario.update").routeId("publish.scenario.kafka.controller.route")
        .log(LoggingLevel.INFO, "Send Scenario update 2 Kafka Route").process(this.publishScenarioUpdateKafkaController).choice()
        .when( simple( "${out.header.updateType} == '" + ChangeType.UPDATE + "'" ))
        .process(this.publishVmsUpdateKafkaController)
        .to(dataRefScenarioUpdateProducerRoute)
        .when( simple( "${out.header.updateType} == '" + ChangeType.CREATE + "'" ))
        .process(this.publishVmsUpdateKafkaController)
        .to(dataRefScenarioCreateProducerRoute)
        .when( simple( "${out.header.updateType} == '" + ChangeType.DELETE + "'" ))
        .process(this.publishVmsUpdateKafkaController)
        .to(dataRefMessageDeleteProducerRoute);

Есть мысли?

1 Ответ

0 голосов
/ 30 января 2019

Вы внедряете Маршрутизатор на основе содержимого EIP , и я считаю, что ваш подход верен.Вы всегда можете использовать CamelTestSupport для проверки RouteBuilders.

Возможное предостережение: пожалуйста, посмотрите, вызывает ли .when() проверка out.header.updateType, вызывает exchange.getOut() (я точно не помню), если это произойдет, вы можете потерять важную информацию в сообщении IN,Это может привести к неожиданным результатам.Это всего лишь предостережение, и вы, возможно, уже знаете разницу.Убедитесь, что достигли и поняли эту страницу , если вы еще этого не сделали.

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