提高包含数据库事务的Mule Flow的性能

时间:2014-03-14 20:43:48

标签: mule mule-studio

我有一个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>

1 个答案:

答案 0 :(得分:0)

Foreach batchSize =&#34; n&#34;,然后为每个有效负载[0..n-1]分叉和加入

http://blogs.mulesoft.org/aggregation-with-mule-fork-and-join-pattern/