Как не транзакционный исходящий работает с транзакционным входящим в Муле

В документации Mule по теме управления транзакциями есть загадочный абзац

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

Что означает приведенное ниже предложение, является ли это опечаткой (больше НЕТ)? и если его нет, то что такое транзакционное действие?

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

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

2 ответа

Решение

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

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

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

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

Дополнительную информацию в разделе "XA и последний ресурсный гамбит" по ссылке ниже: http://www.javaworld.com/article/2077963/open-source-tools/distributed-transactions-in-spring--with-and-without-xa.html

Другие вопросы по тегам