У нас есть существующее приложение, которое использует пружинную партию. В соответствии с новым требованием нам нужно записать строку в cassandra db, прочитав ее из mongo db, а затем обновив столбец состояния в mongo db до true, что означает, что строка обработана.
Я использую библиотеку driver-cassandra-core для записи данных в Cassandra и spring-data-mongodb для обновления данных в базе данных mongo.
Так что теперь я думаю записать данные на cassandra, а затем обновить статус в mongo в ItemWriter (spring-batch), который, я думаю, должен хорошо работать в счастливом сценарии.
Но я не уверен, что это работает хорошо, если что-то не так с приложением, например, если db (cassandra или mongo) выходит из строя, или приложение выходит из строя во время обработки и т. Д. Поэтому я хочу добавить здесь менеджер транзакций, чтобы убедиться, что приложение способно откатить строки, которые не находятся в согласованном состоянии. Я видел, что можно добавить менеджер транзакций, как это ниже:
https://docs.spring.io/spring-batch/trunk/reference/html/configureStep.html#configuringAStep
Но я не уверен, поскольку я использую две разные базы данных No SQL, возможно ли заставить этот диспетчер транзакций работать?
Может кто-нибудь, пожалуйста, дайте мне знать, как правильно справиться с такой ситуацией?
PS : Просто для обновления очень важно, чтобы приложение синхронизировало статус cassandra и mongo, т.е. если приложение записывает данные в cassandra, то соответствующий статус строки должен обновляться в монго.