public class ReactiveMongoTransactionManager extends org.springframework.transaction.reactive.AbstractReactiveTransactionManager implements InitializingBean
ReactiveTransactionManager implementation that manages
ClientSession based transactions for a single
ReactiveMongoDatabaseFactory.
Binds a ClientSession from the specified
ReactiveMongoDatabaseFactory to the subscriber
Context.
Readonly transactions operate on a
ClientSession and enable causal consistency, and also start,
commit or
abort a transaction.
Application code is required to retrieve the MongoDatabase via
ReactiveMongoDatabaseUtils.getDatabase(ReactiveMongoDatabaseFactory) instead
of a standard ReactiveMongoDatabaseFactory.getMongoDatabase() call. Spring
classes such as ReactiveMongoTemplate use this strategy implicitly.
By default failure of a commit operation raises a TransactionSystemException. You can override
doCommit(TransactionSynchronizationManager, ReactiveMongoTransactionObject) to implement the
Retry Commit Operation
behavior as outlined in the MongoDB reference manual.ReactiveMongoDatabaseUtils.getDatabase(ReactiveMongoDatabaseFactory, SessionSynchronization),
Serialized Form| Modifier and Type | Class and Description |
|---|---|
protected static class |
ReactiveMongoTransactionManager.ReactiveMongoTransactionObject
MongoDB specific transaction object, representing a
MongoResourceHolder. |
org.springframework.transaction.reactive.AbstractReactiveTransactionManager.SuspendedResourcesHolderlogger| Constructor and Description |
|---|
ReactiveMongoTransactionManager()
Create a new
ReactiveMongoTransactionManager for bean-style usage. |
ReactiveMongoTransactionManager(ReactiveMongoDatabaseFactory databaseFactory)
Create a new
ReactiveMongoTransactionManager obtaining sessions from the given
ReactiveMongoDatabaseFactory. |
ReactiveMongoTransactionManager(ReactiveMongoDatabaseFactory databaseFactory,
com.mongodb.TransactionOptions options)
Create a new
ReactiveMongoTransactionManager obtaining sessions from the given
ReactiveMongoDatabaseFactory applying the given options, if present, when
starting a new transaction. |
commit, getReactiveTransaction, prepareForCommit, registerAfterCompletionWithExistingTransaction, rollbackpublic ReactiveMongoTransactionManager()
ReactiveMongoTransactionManager for bean-style usage.
Note:The db factory has to
be setDatabaseFactory(ReactiveMongoDatabaseFactory) set} before using the instance. Use this constructor
to prepare a ReactiveMongoTransactionManager via a BeanFactory.
Optionally it is possible to set default transaction options defining
ReadConcern and WriteConcern.public ReactiveMongoTransactionManager(ReactiveMongoDatabaseFactory databaseFactory)
ReactiveMongoTransactionManager obtaining sessions from the given
ReactiveMongoDatabaseFactory.databaseFactory - must not be null.public ReactiveMongoTransactionManager(ReactiveMongoDatabaseFactory databaseFactory, @Nullable com.mongodb.TransactionOptions options)
ReactiveMongoTransactionManager obtaining sessions from the given
ReactiveMongoDatabaseFactory applying the given options, if present, when
starting a new transaction.databaseFactory - must not be null.options - can be null.protected Object doGetTransaction(org.springframework.transaction.reactive.TransactionSynchronizationManager synchronizationManager) throws TransactionException
doGetTransaction in class org.springframework.transaction.reactive.AbstractReactiveTransactionManagerTransactionExceptionprotected boolean isExistingTransaction(Object transaction) throws TransactionException
isExistingTransaction in class org.springframework.transaction.reactive.AbstractReactiveTransactionManagerTransactionExceptionprotected reactor.core.publisher.Mono<Void> doBegin(org.springframework.transaction.reactive.TransactionSynchronizationManager synchronizationManager, Object transaction, TransactionDefinition definition) throws TransactionException
doBegin in class org.springframework.transaction.reactive.AbstractReactiveTransactionManagerTransactionExceptionprotected reactor.core.publisher.Mono<Object> doSuspend(org.springframework.transaction.reactive.TransactionSynchronizationManager synchronizationManager, Object transaction) throws TransactionException
doSuspend in class org.springframework.transaction.reactive.AbstractReactiveTransactionManagerTransactionExceptionprotected reactor.core.publisher.Mono<Void> doResume(org.springframework.transaction.reactive.TransactionSynchronizationManager synchronizationManager, @Nullable Object transaction, Object suspendedResources)
doResume in class org.springframework.transaction.reactive.AbstractReactiveTransactionManagerprotected final reactor.core.publisher.Mono<Void> doCommit(org.springframework.transaction.reactive.TransactionSynchronizationManager synchronizationManager, org.springframework.transaction.reactive.GenericReactiveTransaction status) throws TransactionException
doCommit in class org.springframework.transaction.reactive.AbstractReactiveTransactionManagerTransactionExceptionprotected reactor.core.publisher.Mono<Void> doCommit(org.springframework.transaction.reactive.TransactionSynchronizationManager synchronizationManager, ReactiveMongoTransactionManager.ReactiveMongoTransactionObject transactionObject)
MongoException holding
error labels. transient commit errors labels and retry the the
commit.synchronizationManager - reactive synchronization manager.transactionObject - never null.protected reactor.core.publisher.Mono<Void> doRollback(org.springframework.transaction.reactive.TransactionSynchronizationManager synchronizationManager, org.springframework.transaction.reactive.GenericReactiveTransaction status)
doRollback in class org.springframework.transaction.reactive.AbstractReactiveTransactionManagerprotected reactor.core.publisher.Mono<Void> doSetRollbackOnly(org.springframework.transaction.reactive.TransactionSynchronizationManager synchronizationManager, org.springframework.transaction.reactive.GenericReactiveTransaction status) throws TransactionException
doSetRollbackOnly in class org.springframework.transaction.reactive.AbstractReactiveTransactionManagerTransactionExceptionprotected reactor.core.publisher.Mono<Void> doCleanupAfterCompletion(org.springframework.transaction.reactive.TransactionSynchronizationManager synchronizationManager, Object transaction)
public void setDatabaseFactory(ReactiveMongoDatabaseFactory databaseFactory)
ReactiveMongoDatabaseFactory that this instance should manage transactions for.databaseFactory - must not be null.public void setOptions(@Nullable com.mongodb.TransactionOptions options)
TransactionOptions to be applied when starting transactions.options - can be null.@Nullable public ReactiveMongoDatabaseFactory getDatabaseFactory()
ReactiveMongoDatabaseFactory that this instance manages transactions for.public void afterPropertiesSet()
afterPropertiesSet in interface InitializingBeanCopyright © 2011–2020 Pivotal Software, Inc.. All rights reserved.