首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套迭代中介程序不能在WSO2 esb中工作。

嵌套迭代中介程序不能在WSO2 esb中工作。
EN

Stack Overflow用户
提问于 2022-09-12 07:47:54
回答 1查看 101关注 0票数 2
代码语言:javascript
复制
{"methods":[[{"p_id":"v1","offline":false,}],[{"p_id":"v2","offline":true,}]]}

以上是我的JSON有效负载。我正在使用嵌套的迭代中介器来获取p_id和v1的值。我能够成功地获取值,但是第一个迭代中介之外的日志没有被打印出来。

以下是我的代码:

代码语言:javascript
复制
<iterate expression="json-eval($.methods)" id="iterate-over-Methods">
    <target>
        <sequence>
            <iterate expression="json-eval($)" id="2nd-iteration">
                <target>
                    <sequence>
                        <filter regex="false" source="json-eval($.offline)">
                            <then>
                                <property expression="json-eval($.p_id)" name="p-id" scope="default" type="STRING"/>
                                <log>
                                    <property expression="$ctx:p-id" name="p-id-set"/>
                                </log>
                            </then>
                            <else>
                                <log>
                                    <property name="p-id-set" value="Provider ID already set"/>
                                </log>
                            </else>
                        </filter>

                        <log>
                            <property name="status-1" value="Inside 1st iteration" />
                        </log>
                    </sequence>
                </target>
            </iterate>
            <log>
                <property name="status-2" value="Inside 2nd iteration" />
            </log>
        </sequence>
    </target>
</iterate>

这段代码是否进入了一个无限循环,而它并没有出现呢?我该怎么处理呢?提前谢谢..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-12 12:34:39

根据您提供的信息,我认为您可以在这里使用一个Iterator。(但这确实取决于您的全部使用)。下面是一个带有一个迭代中介器的示例。

代码语言:javascript
复制
<iterate expression="json-eval($.methods)" id="pl-iterator">
    <target>
        <sequence>
            <property expression="json-eval($[0].p_id)" name="p-id" scope="default" type="STRING"/>
            <log level="full">
               <property expression="$ctx:p-id" name="p-id-set"/>
            </log>
        </sequence>
    </target>
</iterate>

另外,Iterate Mediator应该与Aggregate Mediator耦合。因此,请确保添加了适当的聚合逻辑。

在编程语言中,不应将迭代中介器视为for-循环。当您在有效负载上迭代时,有效载荷将被拆分,每个段将在自己的线程上并发执行。因此,除非有必要,否则使用嵌套迭代中介器并不是一个好主意。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73686012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档