0

我正在尝试实现一个简单的流式传输管道:

  1. 从远程 REST 端点获取用户列表,将列表拆分为单独的消息

  2. 对于每个用户,我必须使用 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 查询的内容并在丰富阶段重用它?

4

1 回答 1

0

不能先找部门吗?看来你可以这样做。然后,您将结果设置为一个交换属性,例如,并使用它来丰富每个用户。

实际上有很多方法可以实现这一点。

于 2021-07-28T04:29:31.777 回答