【问题标题】:Sequential back-end calls in WSO2 EI/ESBWSO2 EI/ESB 中的顺序后端调用
【发布时间】:2020-05-07 08:25:03
【问题描述】:

在我的例子中,第一个后端调用的响应是 Array of Objects 格式,如下所示:

回复:

"Entity": {
        "related-List": [
            {
                "fname": "abc",
                "lname": "xyz",
                "bdate": "2013-01-25",
                "accType": "Cur",
                "accNum": "54736",
                "bal": 901,
                "address": "USA"
            },
            {
                "fname": "def",
                "lname": "pqr",
                "bdate": "2013-01-25",
                "accType": "Sav",
                "accNum": "12345",
                "bal": 901,
                "address": "USA"
            },
            {
                "fname": "ghi",
                "lname": "stu",
                "bdate": "2013-01-25",
                "accType": "Dep",
                "accNum": "87654",
                "bal": 901,
                "address": "USA"
            }
]
}

******************/

所以在第二次调用中,我想使用响应中的“accType”和“accNum”,并对响应数组中存在的对象数量进行后端调用。为此,我需要使用 Iterate 或 ForEach 之类的:

<foreach>
<call>
            <endpoint>
               <http method="POST" uri-template="http://localhost:6754/v2/{accType}/{accNum}"/>
            </endpoint>
</call>
</foreach>

<iterate>
    <call>
                <endpoint>
                   <http method="POST" uri-template="http://localhost:6754/v2/{accType}/{accNum}"/>
                </endpoint>
    </call>
</iterate>

实现它的正确方法是什么?

【问题讨论】:

    标签: wso2 wso2esb esb wso2ei


    【解决方案1】:

    您不能在 Foreach 调解器中使用发送或呼叫调解器。因此,您必须使用 Iterate 调解器。您可以将 Iterate mediator 表达式用作 json-eval($.Entity.related-List) 并遍历数组。

    【讨论】:

    • 如何存储响应中对象数组中每个对象的 accTypeaccNum,以便可以将其传递给 Iterate调解员做并行后端调用?正如我在主要问题中提到的,我得到了对象数组格式的响应。
    • 当您遍历对象数组时,消息正文将仅包含该特定对象。您可以使用 jsonpath 来读取这些值。也看看这个博客。 medium.com/@arunans23/…
    猜你喜欢
    • 1970-01-01
    • 2020-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多