事務
解釋 getTxJob 的 MongoDB ClientSession 交易、Reactor 上下文會話傳播、重試責任和 Spring 交易邊界。
getTxJob
getTxJob(...) 會通過 MongoExecutionContext.startSession() 開啟 ClientSession 並開始交易,然後將會話綁定到 Reactor 上下文。正常完成時提交,錯誤/取消時中止活動交易,最後按順序關閉會話。
會話範圍
交易會話僅在 MongoExecutionContext#getSessionScope() 中傳播到相同的 DSL 執行。基本的 DriverMongoExecutionContext 使用自己的 MongoClient 作為會話範圍。
交易重試由調用方負責。
getTxJob(...) 不會自動重試 TransientTransactionError 等 MongoDB 交易錯誤。重試的與次數由操作的冪等性、外部副作用和業務規則決定,這些由調用應用程序了解。
Spring 交易的邊界。
Spring @Transactional / TransactionalOperator。
由 Spring Data MongoDB 管理的交易/會話邊界。
ReactiveMongoDsl#getTxJob。
DSL 直接啟動 ClientSession 並傳遞到 Reactor 上下文。