Apache Camel 更新交换属性

djo*_*leb 2 apache exchange-server properties apache-camel

我需要一些有关更新 Apache Camel 中的交换属性的帮助。

用例:我有一个从 API 端点获取一些 Id 的路由,之后我需要从另一个端点获取每个 id 的信息。

我需要将响应保存在某处,以便稍后创建一些 JSON 数组。

有人可以给我一些具有类似用例的工作路线,或者只是为我指出正确的方向吗?

示例路线

from("direct:getIds") .setProperty("ValueToUpdate").constant("") 
.to("endpontWhichReturns ids")
.split().jsonpath("$.Data") .log("${property.xrefCode}") 
.toD("getInfoById) .log("${body}") 
.choice() .when(header("CamelHttpResponseCode").isEqualTo("200")) 
.setProperty("body").body() 
.setProperty("updateBody",method("PrepareUpdate","prepare")) 
.aggregate(property("ValueToUpdate"), new Aggreagation()) 
.to("direct:someEndpoint") .end() .to("mock:nestdo11");
Run Code Online (Sandbox Code Playgroud)

c0l*_*0ld 5

希望这个简单的路线可以帮助您:

from("jms://somequeue")
            .split(simple("${body}"), (oldExchange, newExchange) -> {
                Response response = newExchange.getIn().getBody(Response.class);
                LinkedList<Response> responseCollection = oldExchange.getProperty("responseCollection", LinkedList.class);
                if (responseCollection == null) {
                    newExchange.setProperty("responseCollection", new LinkedList<Response>(Collections.singletonList(response)));
                } else {
                    responseCollection.add(response);
                    newExchange.setProperty("responseCollection", responseCollection);
                }
                return newExchange;
            })
            .process(exchange -> {
                String id = exchange.getIn().getBody(String.class);
                Response response = receiveResponse(id);
                exchange.getIn().setBody(response);
            })
            .end()
            .process(exchange -> {
                LinkedList<Response> collection = exchange.getProperty("responseCollection", LinkedList.class);
                //create your json
            });
Run Code Online (Sandbox Code Playgroud)