WSO2 ESB根据DSS的结果路由端点

时间:2014-09-19 16:40:35

标签: dynamic routing wso2 esb dss

所以我想打电话

/ sendAllUsersAnEmail

将调用DSS并按照SELECT user_id FROM users WHERE status = 'PENDING'

的方式执行操作

这是问题所在。如何让ESB循环结果(或者我可以让DSS直接调用API吗?)并为每个用户调用/ sendEmail / {user_id}?或者这是不可能的,我是否需要将结果返回到外部语言并再次为每个结果调用esb。

1 个答案:

答案 0 :(得分:1)

如果我理解你需要的东西是这样的:

您的系统数据库中有一个表,来自用户的user_id等待在您的系统中执行某些操作,您需要查阅此表,获取user_id列表,并且对于此列表中的每个条目都调用了一个restful服务传递user_id

所以我的想法是:

  1. 使用数据服务获取user_id列表。
  2. 创建一个代理服务,在seq1中调用此数据服务,并在seq2中获取结果。
  3. 在seq2中使用迭代器介体并将消息拆分为多个部分并异步处理它们,如下例所示:https://docs.wso2.com/display/ESB481/Sample+400%3A+Message+Splitting+and+Aggregating+the+Responses
  4. 一个例子:

    <iterate expression="//m0:getQuote/m0:request" preservePayload="true"
             attachPath="//m0:getQuote"
             xmlns:m0="http://services.samples">
        <target>
            <sequence>
                <send>
                    <endpoint>
                        <address
                            uri="http://localhost:9000/services/SimpleStockQuoteService"/>
                    </endpoint>
                </send>
            </sequence>
        </target>
    </iterate>
    

    我希望这对你有所帮助。

    问候。