2014-09-29 1 views
2

뮬의 서브 플로우와 프로세서 체인의 차이점은 무엇입니까?뮬 서브 플로우 대 프로세서 체인

지금까지 내가 사용한 두 가지 모두 다시 사용할 수 있습니다. 둘 다 설정을 더 읽기 쉽게 만듭니다. 둘 다 동 기적으로 실행됩니다. 둘 다 트리거링 플로우에서 처리 전략과 예외 전략을 상속받습니다.

프로세서 체인은 전역 메시지 프로세서뿐만 아니라 흐름 내부에서 정의 될 수 있습니다.

이 외에도 동작과 사용 방식이 어떻게 다른가요?

업데이트 : 명명 된 프로세서 체인

<flow name="man-flow" > 
     <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" path="myapp/collection-processor" doc:name="HTTP"> 
      <byte-array-to-string-transformer></byte-array-to-string-transformer> 
     </http:inbound-endpoint> 
     <expression-component doc:name="Expression"><![CDATA[java.util.ArrayList list = new java.util.ArrayList(); 
      list.add("First String"); 
      list.add("Second String"); 
      list.add("Third String"); 
      payload = list;]]>   
     </expression-component> 
     <request-reply> 
      <vm:outbound-endpoint path="split"/> 
      <vm:inbound-endpoint path="processed"/> 
     </request-reply> 
     <set-payload value="#[payload.toString()]"/> 
    </flow> 

    <processor-chain name="sample-processor-chain"> 
     <append-string-transformer message=" in splitter" /> 
     <append-string-transformer message=" in processor-chain" /> 
    </processor-chain> 

    <flow name="splitter-flow"> 
     <vm:inbound-endpoint path="split"/> 
     <collection-splitter enableCorrelation="IF_NOT_SET"/> 
     <processor ref="sample-processor-chain"></processor> 
     <vm:outbound-endpoint path="aggregate"/>  
    </flow> 

    <flow name="aggregator-flow"> 
     <vm:inbound-endpoint path="aggregate"/> 
     <collection-aggregator timeout="30000"/>   
     <vm:outbound-endpoint path="processed"/> 
    </flow> 

답변

3

processor-chain와 예 설정은 하나 이상의 중첩 된 프로세서를 허용하지 않는 일부 메시지 프로세서의 문제를 해결하기 위해 만들어졌다. sub-flow의 아이디어는 일련의 메시지 프로세서를 매크로로 확장 한 것입니다. 최신 Mule 버전을 사용하는 경우 일부 오래된 구조는 제외하고 프로세서 체인을 사용하지 않아야합니다. 하위 흐름을 사용하면 예를 들어 반복적 인 내용을 포함하여 훨씬 더 읽기 쉬운 코드를 가질 수 있습니다.