如何使用查询结果存储全局值并重用它来丰富每条消息
How to store a global value with query results and reuse it to enrich every message
我正在尝试实现一个简单的流式传输管道:
从远程 REST 端点获取用户列表,将列表拆分为单独的消息
对于每个用户,我必须使用来自 SQL 参数 table(部门)的信息来丰富它,例如:
初始消息(用户 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>
我需要让整个部门 table 能够丰富用户信息,但我想避免对每条消息都这样做。
有没有办法存储 sql 查询的内容并在充实阶段重用它?
你不能先搞定部门吗?看来你可以做到。然后,您将结果设置为一个交换 属性 实例,并用它来丰富每个用户。
实际上有很多方法可以实现。
我正在尝试实现一个简单的流式传输管道:
从远程 REST 端点获取用户列表,将列表拆分为单独的消息
对于每个用户,我必须使用来自 SQL 参数 table(部门)的信息来丰富它,例如:
初始消息(用户 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>
我需要让整个部门 table 能够丰富用户信息,但我想避免对每条消息都这样做。
有没有办法存储 sql 查询的内容并在充实阶段重用它?
你不能先搞定部门吗?看来你可以做到。然后,您将结果设置为一个交换 属性 实例,并用它来丰富每个用户。
实际上有很多方法可以实现。