2015-03-23 1 views
1

В документации Mule по transaction management теме есть зашифрованное пунктКак работает ноны транзакционной исходящую работы с транзакционными Входящее в Mule

Mule может управлять нетранзакционными исходящими разъемами. По умолчанию исходящий коннектор из не транзакционного транспорта игнорирует активную транзакцию, а не отклоняет ее. Другими словами, транзакционное действие по умолчанию для таких разъемов больше не является NONE. Пример этого примера иллюстрирует это поведение. Mule обрабатывает сообщения, которые он получает из очереди VM синхронно и транзакционно. Транспортировка файлов в примере кода не является транзакционной, поэтому запись в файл не является частью транзакции. Однако, если сообщение генерирует исключение, а Mule создает файл, Mule откатывает транзакцию и обрабатывает сообщение. Этот пример, по сути, представляет собой транзакцию с несколькими ресурсами.

Что означает нижеследующее предложение, это опечатка (не более NONE)? и если это не NONE, то что такое транзакционное действие? не

Другими словами, действие транзакционный по умолчанию для таких разъемов больше не является NONE

Кроме того, если запись в файл не является частью сделки, то как транзакция будет откат, если Ошибка записи файла?

ответ

1

Это не опечатка.

Раньше было NONE, поэтому сделка была разрешена независимо от исхода исходящего взаимодействия без транзакции. В настоящее время транзакция не разрешена, то есть неконтрактированная исходящая конечная точка не фиксирует или откатывает текущую транзакцию.

Откат происходит из-за того, что выбрано исключение, которое отмечает транзакцию для отката. Когда поток прекращается, текущая транзакция затем разрешается. Если он был отмечен для отката, он будет откат, иначе он будет зафиксирован.

+0

Означает ли это, не входящие в исходящих в сделке также является частью сделки в приведенном выше примере? – Sudarshan

+1

Что вы подразумеваете под «частью транзакции»? Он не может ** зарегистрировать ** в транзакции, потому что он не является транзакционным. Но текущая транзакция не приостановлена ​​и не разрешена на ее границе, поэтому она может пометить ее как откат, если она выдает исключение. –

1

В приведенном выше тексте описывается тип транзакций «Last Resource Gambit», где все, кроме одного, являются транзакционными. В этом случае ни один транзакционный ресурс не должен быть последним, и когда он выдает исключение, все остальные ресурсы транзакций откатываются назад. Это своего рода фиктивное транзакционное поведение и очень эффективное.

Более подробная информация в «ХА и последнем ресурсе гамбит» раздел по ссылке ниже: http://www.javaworld.com/article/2077963/open-source-tools/distributed-transactions-in-spring--with-and-without-xa.html

+0

Блестящее спасибо! – Sudarshan

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