Маршрут Apache Camel, извлеките значение из документа BSON, чтобы ввести строку подключения http

avatar
BenW
8 августа 2021 в 23:37
52
0
1

Я извлекаю документ из MongoDB и хочу взять значение startTime и добавить его в качестве параметра соединения в строку URL-адреса http.

Документ выглядит следующим образом:

Document{{_id=6110593a2d79803d4ebf2b83, startTime=1585009140000}}

Я использую проекцию, чтобы получить только то поле, которое мне нужно. Я могу зарегистрировать значение, используя jsonpath. Но как мне получить значение таким образом, чтобы я мог аккуратно добавить его в URL-адрес http?

from("timer:PingTimer?fixedRate=true&period=15000")
.setHeader(MongoDbConstants.SORT_BY).constant(Sorts.descending("startTime"))
.setHeader(MongoDbConstants.FIELDS_PROJECTION).constant(Projections.include("startTime"))
.setBody().constant("{}")
.to("mongodb:mongo?database={{spring.data.mongodb.database}}&collection=one_min&operation=findOneByQuery")
.log("Body ${body}")
.toD("https://this.that/api/markets/USD?resolution=60&start_time=" 
        //How do I get the value of startTime in here? 
        )
.setBody().jsonpath("$.startTime")  // This gets the value
;

[Изменить]

Это целесообразно?

.setHeader("test").jsonpath("$.startTime")
.toD("https://this.that/api/markets/USD?resolution=60&start_time=" + "${headers.test}")
Источник
Pasi Österman
9 августа 2021 в 08:01
0

Добавьте параметры запроса в заголовок CamelHttpQuery вместо URI конечной точки. Верблюд использует URI конечной точки для настройки конечной точки и CamelHttpQuery для добавления параметров запроса к запросу. В Java DSL вы также можете получить имя заголовка из Exchange.HTTP_QUERY, если не хотите вводить имя заголовка вручную. Это может быть немного чище, как при аутентификации, и все URI конечной точки могут стать довольно длинными.

Ответы (0)