Camel Java DSL: обновите следующий параметр запроса опроса, используя значение из ответа - PullRequest
0 голосов
/ 20 февраля 2019

Я новичок в Apache Camel, это то, что я пытаюсь выяснить.В приведенном ниже примере кода я пытаюсь использовать свойство - «значение» в параметре запроса в следующем запросе опроса.

String valueFromTheResponse= ""
m.addRouteBuilder(new RouteBuilder() {
        @Override
        public void configure() throws Exception {
            from("timer://foo?period=2)
            .setHeader(Exchange.CONTENT_TYPE, constant("application/json"))
            .setHeader("Accept", constant("application/json"))
            .to("https4://" + <myrequestURL>?param=<valueFromTheResponse>)
            .marshal().json(JsonLibrary.Jackson)
            .setProperty("value", jsonpath("$.value"))
            .process(new Processor() {
                @Override
                public void process(final Exchange exchange) throws Exception {
                    valueFromTheResponse = (String) exchange.getProperty("value");
                }
            })
        }
    });
    m.run();

Каков наилучший способ добиться этого?или присвоить переменной уровня класса значение свойства?

ОБНОВЛЕНИЕ: РЕШЕНИЕ получило его, добавив следующее:

.process(new Processor() {
                @Override
                public void process(final Exchange exchange) throws Exception {
                    exchange.getIn().setHeader("CamelHttpQuery", buildParamQuery());
                }
            })

1 Ответ

0 голосов
/ 21 февраля 2019

Вам потребуется сохранить значение в общем поле, например, в самом классе RouteBuilder или в экземпляре общего класса.А затем в URI конечной точки от до http вам нужно вместо этого задать запрос param в качестве заголовка сообщения, где вы можете получить это значение с помощью вызова метода.

.setHeader(Exchange.HTTP_QUERY, method(this, "buildParamQuery"))

И затем иметьметод

public String buildParamQuery() {
  return "param=" + sharedValue;
}

И затем вы устанавливаете это поле из встроенного процессора с последним значением.И помните о начальном значении, например, при первом опросе это значение равно null, поэтому вам может понадобиться вернуть пустую строку / нуль из метода buildParamQuery или что-то еще.

...