gpt4 book ai didi

json - 带有 Json 数组拆分的 Apache Camel

转载 作者:行者123 更新时间:2023-12-04 11:56:12 25 4
gpt4 key购买 nike

我有一个 Camel 应用程序,它从一个大小为 13000 的 jms 队列接收一个 json 数组请求,json 数组请求的结构如下。我想使用一组 5 来流式传输和拆分 json 数组。
例如,如果我收到一个大小为 100 的 json 数组,我想将其分组为 5 并将其拆分为 20 个请求。
是否有内置的 Camel 功能来分组和拆分 json 数组,还是我需要编写自定义拆分器?

我正在使用 Camel 2.17 版本。

示例 json 数组:

[{
"name": "Ram",
"email": "ram@gmail.com",
"age": 23
}, {
"name": "Shyam",
"email": "shyam23@gmail.com",
"age": 28
}, {
"name": "John",
"email": "john@gmail.com",
"age": 33
}, {
"name": "Bob",
"email": "bob32@gmail.com",
"age": 41
}, {
"name": "test1",
"email": "test1@gmail.com",
"age": 41
}, {
"name": "test2",
"email": "test2@gmail.com",
"age": 41
}, {
"name": "test3",
"email": "test3@gmail.com",
"age": 41
}, {
"name": "test4",
"email": "test4@gmail.com",
"age": 41
}]

最佳答案

你可以尝试这样的事情:

@Override
protected RoutesBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {

@Override
public void configure() throws Exception {
from("direct:start")
.split().jsonpath("$")
.streaming()
.aggregate(AggregationStrategies.groupedExchange())
.constant("true")
.completionSize(5)
.completionTimeout(1000)
.log("${body}")
.to("mock:result");
}
};
}

如果消息的大小不是 5 的倍数,则路由应在聚合前等待 1 秒并继续。使用您的输入,结果将是分别包含 5 个和 3 个项目的两条消息:
INFO 5419 --- [           main] route1                                   : List<Exchange>(5 elements)
INFO 5419 --- [eTimeoutChecker] route1 : List<Exchange>(3 elements)

可以查看完整样本 in here .

编辑:

根据要求,一个 Spring DSL 示例:
<camel:route>
<camel:from uri="direct:start" />
<camel:split streaming="true">
<camel:jsonpath>$</camel:jsonpath>
<camel:aggregate completionSize="5"
completionTimeout="1000" groupExchanges="true">
<camel:correlationExpression>
<camel:constant>true</camel:constant>
</camel:correlationExpression>
<camel:log message="${body}"></camel:log>
<camel:to uri="mock:result"></camel:to>
</camel:aggregate>
</camel:split>
</camel:route>

关于json - 带有 Json 数组拆分的 Apache Camel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47796217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com