我正在尝试实现一个简单的流式传输管道:
从远程 REST 端点获取用户列表,将列表拆分为单独的消息
对于每个用户,我必须使用 SQL 参数表(部门)中的信息来丰富它,例如:
初始消息(用户 1)
id:1
departmentId: 1
parentDepartmentId: 23
部门
Department 1
id: 1
name: Dep1
Department 2
id: 23
name: Dep23
丰富的用户 1
id:1
departmentId: 1
departmentName: Dep1
parentDepartmentId: 23
parentDepartmentName: Dep23
路线背景:
<routeContext id="route1" xmlns="http://camel.apache.org/schema/spring">
<route id="route1">
<from id="_from1" uri="timer:mytimer"/>
<setHeader headerName="CamelHttpMethod">
<constant>POST</constant>
</setHeader>
<setHeader headerName="Content-Type">
<constant>application/json</constant>
</setHeader>
<setBody>
<simple>{ "new": "true" }</simple>
</setBody>
<to id="_apiCall1" uri="https4://myapi/v1/users/search"/>
<split streaming="true">
<simple>${body}</simple>
<to uri="direct:processNewUser"/>
</split>
</route>
<route id="processNewUser">
<from uri="direct:processNewUser"/>
<enrich strategyRef="myAggregationStrategy">
<simple>sql:select * from departments"</simple>
</enrich>
</route>
</routeContext>
我需要获取整个部门表才能丰富用户信息,但我想避免对每条消息都这样做。
有没有办法存储 sql 查询的内容并在丰富阶段重用它?