2014-01-13 3 views
0

나는 인바운드 엔드 포인트로 VM 대기열을 가지고 있습니다.노새 시간당 하나의 흐름

  1. VM 인바운드 엔드 포인트가 메시지를 가져오고 그 다음 다른 장기 실행을 시작할 것 또 다른 메시지 (예를 들어 10 개의 메시지)를 제공 VM 인바운드 엔드 포인트에 긴 실행 처리 흐름
  2. 을 시작합니다으로 지금은 프로세스를 실행하려면 공정하지만 첫 번째는
  3. VM 큐에있는 모든 메시지가 완료 될 때까지 VM이 큐에 메시지를 유지할은 타임 아웃 시간은

가 어떻게 MuleESB에서이 작업을 수행 할 수 있습니다이 시간 이후 큐에서 제거했다?

답변

1

비동기 흐름 인 경우 처리 전략을 사용하여 특정 흐름을 실행하는 스레드 수를 제한 할 수 있습니다.

<queued-asynchronous-processing-strategy name="allowOneThread" maxThreads="1"/> 

<flow name="OnlyOneAtTheTime" processingStrategy="allowOneThread"> 
    <vm:inbound-endpoint path="requestQueue" exchange-pattern="one-way" /> 
    <logger level="ERROR" message="Before sleep : #[payload]"/> 
    <!-- Simulate long running processor --> 
    <component class="Sleep" /> 
    <logger level="ERROR" message="After sleep : #[payload]"/> 
    <vm:outbound-endpoint path="responseQueue"/> 
</flow> 

Mule documentation on processing strategies을 참조하십시오.