Пакетные транзакции MuleSoft ESB
Спасибо заранее за любую помощь. Вот сценарий, который я пытаюсь воссоздать в Mulesoft.
1 500000 записей в таблице. Вот текущий процесс, который мы используем.
Начать транзакцию.
удалить все записи из таблицы.
перезагрузите таблицу из плоского файла.
совершить сделку.
В конце концов нам нужен файл в хорошем состоянии, таким образом, использование транзакции. Если произойдет сбой, данные в таблице будут возвращены к исходному допустимому состоянию.
Мне удалось получить необходимую нам скорость с помощью элемента Batch < 10 минут, но, похоже, транзакции не поддерживаются во всем потоке пакета.
Любые идеи, как я мог заставить это работать в Mulesoft?
Еще раз спасибо.
3 ответа
Немного другой рабочий процесс, но как насчет:
- Загрузить временную таблицу из плоского файла
- В случае удачного исходного стола
- Переименовать временную таблицу в исходное имя таблицы
Вы можете сохранить рабочий процесс пакетной обработки Mule, чтобы загрузить временную таблицу и забыть об откате.
Для этого вы можете попробовать следующее:
- Использовать транзакции XA (поскольку будет использоваться более одного соединителя, независимо от использования одного и того же транспорта или нет)
- Включите в транзакцию ресурс, используемый в пользовательском коде Java.
Это также может быть применено в том же транспортном средстве (например, JDBC в конфигурации Mule, а также в компоненте Java), поэтому оно не ограничивается случаем, продемонстрированным в PoC, который приводится только в качестве ссылки.
Пожалуйста, обратитесь к этой статье https://dzone.com/articles/passing-java-arrays-in-oracle-stored-procedure-fro
Из записей опроса временных таблиц. Вы можете создать массив с любым количеством записей. С размером 100K будет включать в себя только 15 поездок туда и обратно.
Чтобы определить записи об ошибках, вы можете вставить записи в таблицу ошибок, но это должно быть реализовано в процедуре базы данных.