2015-03-03 2 views
1

Попытка реализовать подход транзакции для потока мула, который содержит различные подпотоки, и каждый подпоток содержит некоторые вставки базы данных в весеннем компоненте с использованием компонента-вызова.Mule: Менеджер транзакций для подпотока

<amqp:inbound> 
    <flow ref="subflow1"> 
    <flow ref="subflow2"> 
    <flow ref="subflow3"> 
<amqp:outbound> 

где subflow1 и Подпоток 2 и содержит призыв к сервисному бобу, который вызывающая операции базы данных DAO (с использованием спящего режимом сеанса) .Subflow3 является призывом к внешней системе.

<flow name="subflow1"> 
     <invoke object-ref="serviceBean" method="databaseOperation" methodArguments="#[message.inboundProperties]"/> 
</flow> 

Предложить лучший подход реализовать менеджер транзакций таким образом, что если какие-либо из подпотока не удается все вставки заявление сделано в предыдущих подпотоках должно откатить.

ответ

0
  • Поместите transactional сферу вокруг рефов потока,
  • Использование sub-flow вместо flow для суб-потоков, так и исключения происходит в них пузырек до транзакционного объема потока вызывающего абонента.
+0

Спасибо @ david. Но не лучше использовать поток, поскольку мы можем указать стратегию исключения для потока, иначе в подпотоле он наследует стратегию исключения основного потока. –

+0

Вы можете использовать 'flow', но вы должны быть очень осторожны с вашими локальными стратегиями исключения, чтобы избежать предотвращения возврата транзакций, если это необходимо. –

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