2014-01-13 4 views
0

У меня есть поток, где в качестве входящей конечной точки у меня есть очередь VM. Теперь я хочу, чтобы запустить процесс, как:Mule один поток за время

  1. VM въездной конечная точка получает сообщение и начинает долго работает поток обработки
  2. на VM входящей конечной тогда приходит еще сообщения (например, 10 сообщений), которые начинаются еще один длинный ход процесс, но виртуальная машина будет держать сообщение в очереди, пока первый не закончит
  3. Каждое сообщение в очереди 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.

Смежные вопросы