Синхронизация различных потоков в mule

#mule

#mule

Вопрос:

У меня есть 2 потока, A.flow и B.flow, в конечном итоге оба потока выполняют один и тот же класс Java.

A amp; B считываются из отдельной очереди.

Я хочу синхронизировать потоки так, чтобы, если оба потока получали входные данные одновременно, тогда один поток обрабатывался одновременно, и после его завершения другой поток начнет обработку.

Есть идеи?

Спасибо

Комментарии:

1. Когда вы говорите «потоки обрабатывают один и тот же класс Java», вы имеете в виду, что полезная нагрузка сообщения сообщения содержит тот же объект java (экземпляр класса) или что он использует тот же экземпляр объекта java в качестве процессора в потоке? Возможно, вы могли бы прояснить свой вопрос с помощью некоторого примера flow XML.

Ответ №1:

Используйте объединенный компонент и настройте его на одновременное использование одного потока:

 <flow name="A">
    <jms:inbound-endpoint...>
    ...
    <vm:outbound-endpoint path="process"/>
    ...
</flow>

<flow name="B">
    <jms:inbound-endpoint...>
    ...
    <vm:outbound-endpoint path="process"/>
    ...
</flow>

<flow name="process">
    <vm:inbound-endpoint path="process"/>
    <pooled-component class="org.my.PrototypeObject">
        <pooling-profile exhaustedAction="WHEN_EXHAUSTED_WAIT" initialisationPolicy="INITIALISE_ALL" maxActive="1" maxIdle="1" maxWait="1000" /> </pooled-component>
    </pooled-component>
</flow>
  

Источник: http://www.mulesoft.org/documentation/display/current/Configuring Java Components#ConfiguringJavaComponents-ConfiguringaPooledJavaComponent

Комментарии:

1. Этот компонент должен быть в третьем потоке (не подпотоке), на который ссылаются потоки A и B, верно?