Edit: Mule 3.4.1Mule транзакционной сфера Откат, как представляется, не в состоянии
У нас есть поток Mule, который чередуется считывает из одной базы данных со вставками в другую, все обернутые в транзакционной области. В этом конкретном случае одна из более поздних вставок терпит неудачу, и мы ожидаем, что все откатится.
Когда мы смотрим в журналах, мы видим исключение (например, дублируем PRIMARY KEY) для второй вставки (то есть BulkInsertInstanceToCache в примере ниже). Когда мы смотрим в базу данных, мы видим данные из первой вставки (BulkInsertActivityToCache в примере ниже). Мы ожидали, что все данные исчезнут.
Мы неправильно настроили эту область для того, что мы хотим?
Вот пример кода, где я сократил его до двух вставок, чтобы показать тип выполняемой обработки.
<flow name="ProcessBulkUpdateCache" processingStrategy="synchronous" doc:name="ProcessBulkUpdateCache">
<transactional action="ALWAYS_BEGIN" doc:name="Transactional">
<jdbc-ee:outbound-endpoint exchange-pattern="request-response"
queryKey="GetActivitiesForCache" queryTimeout="-1" connector-ref="SumTotalDatabase">
<jdbc-ee:transaction action="NONE" />
</jdbc-ee:outbound-endpoint>
<jdbc-ee:outbound-endpoint exchange-pattern="request-response"
queryKey="BulkInsertActivityToCache" queryTimeout="-1" connector-ref="EAIServiceDatabase">
</jdbc-ee:outbound-endpoint>
<jdbc-ee:outbound-endpoint exchange-pattern="request-response"
queryKey="GetInstancesForCache" queryTimeout="-1" connector-ref="SumTotalDatabase">
<jdbc-ee:transaction action="NONE" />
</jdbc-ee:outbound-endpoint>
<jdbc-ee:outbound-endpoint exchange-pattern="request-response"
queryKey="BulkInsertInstanceToCache" queryTimeout="-1" connector-ref="EAIServiceDatabase">
</jdbc-ee:outbound-endpoint>
</transactional>
<catch-exception-strategy doc:name="Unexpected">
...etc.
</catch-exception-strategy>
</flow>
Редактировать Я попытался добавить элемент BEGIN_OR_JOIN транзакции в первом INSERT и элемент транзакции ALWAYS_JOIN во втором, но код бросает исключение, когда он достигнет второй, что не существует ни одной сделки с открытым присоединиться.