Мне нужна некоторая информация о потоке данных в пакетной обработке Spring, но не найти то, что я ищу в Интернете (несмотря на несколько полезных вопросов на этом сайте).
Я пытаюсь установить стандарты для использования Spring Batch в нашей компании, и нам интересно, как Spring Batch ведет себя, когда несколько процессоров на шаге обновляют данные в разных источниках данных.
Этот вопрос фокусируется на фрагментированном процессе, но не стесняется предоставлять информацию о других режимах.
Из того, что я видел (пожалуйста, поправьте меня, если я ошибаюсь), когда строка читается, она следует всему потоку (читателю, процессорам, записи) до следующего чтения (в отличие от силосной обработки, где читатель будет обрабатывать все строки, отправлять их на процессор и т.д.).
В моем случае несколько процессоров считывают данные (в разных базах данных) и обновляют их в процессе, и, наконец, писатель вставляет данные в еще один БД. Пока что JobRepository не связан с базой данных, но это будет независимым, что еще более усложняет задачу.
Эта модель не может быть изменена, поскольку данные принадлежат нескольким бизнес-областям.
Как обрабатывается транзакция в этом случае? Являются ли данные переданы только после обработки полного фрагмента? И тогда есть ли 2-фазное управление фиксацией? Как это обеспечивается? Какую разработку или конфигурацию необходимо сделать для обеспечения согласованности данных?
В более общем плане, , какими будут ваши рекомендации в подобном случае?