Transaksi
Jelaskan transaksi ClientSession MongoDB getTxJob, propagasi sesi Reactor Context, tanggung jawab retry, dan batas transaksi Spring.
getTxJob
getTxJob(...) membuka ClientSession dengan MongoExecutionContext.startSession() dan memulai transaksi, kemudian memasukkan binding sesi ke dalam Reactor Context. Pada penyelesaian normal, commit, pada error/cancel abort transaksi aktif, dan terakhir menutup sesi.
Ruang lingkup sesi
Sesi transaksi hanya dipropagasi ke eksekusi DSL yang sama oleh MongoExecutionContext#getSessionScope(). DriverMongoExecutionContext dasar menggunakan MongoClient miliknya sebagai ruang lingkup sesi.
Tanggung jawab untuk retry transaksi ada pada pemanggil.
getTxJob(...) tidak secara otomatis melakukan retry untuk kesalahan transaksi MongoDB seperti TransientTransactionError. Keputusan untuk melakukan retry dan jumlahnya ditentukan oleh idempotensi operasi, efek samping eksternal, dan aturan bisnis yang diketahui oleh aplikasi pemanggil.
Batasan dengan transaksi Spring.
Spring @Transactional / TransactionalOperator
Batasan transaksi/sesi yang dikelola oleh Spring Data MongoDB.
ReactiveMongoDsl#getTxJob
DSL memulai ClientSession secara langsung dan meneruskannya ke Reactor Context.