首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从mule 'Splitter‘组件中断循环?

如何从mule 'Splitter‘组件中断循环?
EN

Stack Overflow用户
提问于 2014-09-18 03:16:32
回答 2查看 574关注 0票数 0

我知道Splitter是mule中的异步循环。

我想在一些条件下打破它。有没有办法做到这一点?

可以使用For Each组件来完成吗?我应该拖动哪个组件来中断循环?

我使用xpath来拆分xml循环。

EN

回答 2

Stack Overflow用户

发布于 2014-09-19 04:15:57

拆分器为您指定的集合中的每一项创建单独的消息。如果您想阻止其中一些项目被处理,请在拆分器后使用Filter

或者,您可以创建一个更复杂的xpath,以便只返回您想要处理的项。例如,/order/item[position() < 4]将只返回文档中的前三个项目节点。

如果您确实想“中断”并确保不再处理集合中的任何项,可以在ForEach的主体中生成一个异常。您的流的异常策略将立即被调用,并且不会再处理更多的项。

票数 0
EN

Stack Overflow用户

发布于 2016-06-03 19:16:35

我也有同样的问题。当条件为真时,我想要中断的for-each循环(流程非常复杂,但简而言之……)

我不认为生成异常是一个好主意。我已经达到的最好的方法是在循环开始时进行for-each和过滤表达式。

示例:

代码语言:javascript
复制
 <flow name="break-foreach" processingStrategy="Queued_Asynchronous_Processing_Strategy">
        <http:listener config-ref="HTTP_Sat" path="/loop " allowedMethods="GET" doc:name="HTTP"/>
        <set-payload value="#[[0,1,2,3,4]]" doc:name="Set Payload"/>
        <foreach collection="payload" doc:name="For Each">
            <logger message="Iteration before filter: #[payload]" level="INFO" doc:name="Logger"/>
            <expression-filter expression="#[payload&lt;3]" doc:name="Expression"/>
            <logger message="Iteration after filter: #[payload]" level="INFO" doc:name="Logger"/>
        </foreach>
    </flow>

控制台显示如下:

代码语言:javascript
复制
Iteration before filter: 0
 Iteration after filter: 0
 Iteration before filter: 1
 Iteration after filter: 1
 Iteration before filter: 2
 Iteration after filter: 2
 Iteration before filter: 3
 Iteration before filter: 4

当然,这不是中断,因为for-each会继续处理。

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

https://stackoverflow.com/questions/25898600

复制
相关文章

相似问题

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