Это действительно зависит от того, насколько надежным является решение, которое вам нужно. Минимальный уровень надежности в этом случае - транзакции XA. Чтобы использовать это, вам нужна база данных и драйвер JDBC, который поддерживает его для стартеров, тогда вы можете настроить Spring на использование (here - это схема).
Если XA недостаточно надежна для вас (у XA есть сценарии сбоя, например, если во второй фазе совершения каких-либо сбоев, например, сбоев оборудования) происходит то, что вам действительно нужно сделать, это поместить все данные в одной базе данных, а затем разделить его на отдельный процесс. Таким образом, данные могут быть непоследовательными, но они могут быть восстановлены.
Редактировать: Я имею в виду, что все данные помещаются в одну базу данных. Для этой цели либо первая база данных, либо другая база данных. Эта база данных по существу станет очередью, из которой будет загружен окончательный вид данных. Запись в эту базу данных (при условии получения достойного продукта базы данных) будет завершена или полностью завершится. Затем отдельный поток опросает эту базу данных и распространяет любые отсутствующие данные в другие базы данных. Поэтому, если процесс завершится неудачно, когда этот поток снова запустится, он продолжит процесс распространения. Данные могут отсутствовать в каждом месте, где вы хотите, сразу же, но ничего не потерялось.
Решение на основе FOSS было бы очень полезно. – peakit
JBoss Transaction Manager является открытым исходным кодом и может использоваться без использования всего контейнера JBoss. – SteveD
И обе ваши базы данных должны поддерживать XA - не все делают, и их уровень стабильности/функциональности может быть причиной беспокойства. – SteveD