我有一个mule流,它执行一个查询以批量检索100个记录。然后它将记录传递给foreach并在该循环内,每个记录在其自己的事务中处理。如果一个记录的事务失败,这不会影响foreach循环中的其他记录,因为它们应该继续执行它们。
除了它连续执行每个记录的事务之外,它的效果很好。我希望多个交易同时工作(在限制范围内 - 一次说4个交易)以加快流程。
<foreach doc:name="For Each">
<ee:multi-transactional action="ALWAYS_BEGIN" doc:name="Transactional">
EXECUTE A NUMBER OF DIFFERENT QUERIES WITHIN THE TRANSACTION
</ee:multi-transactional>
</foreach>
我以为我可以使用异步,但我需要在流程结束时关联所有内容。
编辑:我使用的解决方案
<foreach doc:name="For Each" batchSize="50" >
<all enableCorrelation="IF_NOT_SET" doc:name="All">
<async doc:name="Async">
<foreach doc:name="BatchedForEach">
<ee:multi-transactional action="ALWAYS_BEGIN" doc:name="Transactional">
EXECUTE A NUMBER OF DIFFERENT QUERIES WITHIN THE TRANSACTION
</ee:multi-transactional>
</foreach>
<flow-ref name="completeBatch" />
</async>
</all>
</foreach>
<sub-flow name="completeBatch">
<collection-aggregator doc:name="Collection Aggregator"/>
<combine-collections-transformer />
</sub-flow>
答案 0 :(得分:0)
Foreach batchSize =&#34; n&#34;,然后为每个有效负载[0..n-1]分叉和加入
http://blogs.mulesoft.org/aggregation-with-mule-fork-and-join-pattern/