Как передать параметры на верблюжий маршрут? - PullRequest
0 голосов
/ 27 апреля 2018

Возможно передать параметры в маршрут Camel? Например, в следующем фрагменте кода:

public class MyRoute extends RouteBuilder {
    public void configure() throws Exception {
       from("direct:start")
         .to("cxf:bean:inventoryEndpoint?dataFormat=PAYLOAD");
    }
}

Значение для dataFormat находится в жестком коде, но что, если я хочу установить его динамически?, Передавая значение из кода, где вызывается route. Я знаю, что это возможно, добавив конструктор и передав в него параметры, например:

public class MyRoute extends RouteBuilder {

    private String type;

    public MyRoute(String type){
      this.type = type;
    }

    public void configure() throws Exception {
       from("direct:start")
         .to("cxf:bean:inventoryEndpoint?dataFormat=" + type);
    }
}

Есть другой способ?

Большое спасибо!

1 Ответ

0 голосов
/ 27 апреля 2018

Как вы упомянули, вы можете использовать конструктор (или сеттеры или любые другие инструменты Java / Framework), если параметры статичны с точки зрения верблюда .

Параметры настраиваются в приложении, но после запуска приложения они больше не изменяются. Таким образом, каждое сообщение, обработанное маршрутом Camel, использует одно и то же значение.

В отличие от этого, когда параметры являются динамическими, то есть они могут изменяться для каждого обработанного сообщения, вы можете использовать динамическую конечную точку toD() Camel. Эти адреса конечных точек могут содержать выражения, которые вычисляются во время выполнения. Например маршрут

from("direct:start")
    .toD("${header.foo}"); 

отправляет сообщения в динамическую конечную точку и получает значение из заголовка сообщения с именем foo. Или использовать ваш пример

.toD("cxf:bean:inventoryEndpoint?dataFormat=${header.dataFormat}");

Таким образом, вы можете установить формат данных для каждого сообщения индивидуально через заголовок.

Подробнее о динамических конечных точках можно узнать на на этой странице документации Camel

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