У меня есть приложение Spring Batch с двумя базами данных: одна база данных SQL для метаданных Spring Batch, а другая - MongoDB, в которой хранятся все бизнес-данные. Отношение БД по-прежнему использует DataSourceTransactionManager
. Однако я не думаю, что запись Mongo выполняется в рамках активной транзакции с откатами. Вот выдержка из официальная документация Spring Batch на MongoItemWriter
:
Реализация ItemWriter, которая записывает в хранилище MongoDB, используя реализацию MongoOperations Spring Data. Поскольку MongoDB не является хранилищем транзакций, прилагаются все усилия, чтобы сохранить записанные данные в последний момент, но при этом соблюдают контракты о статусе задания. При возникновении ошибки во время записи попытки отката не предпринимаются.
Однако это уже не так; MongoDB представил транзакции ACID в версии 4. Как мне добавить транзакции в мои пишет? Я мог бы использовать @Transactional
в своих методах обслуживания, когда использую ItemWriterAdapter
. Но все еще не знаю, что делать с _5 _... Какая здесь правильная конфигурация? Спасибо.