public class Transactions
extends java.lang.Object
implements java.lang.AutoCloseable
The main methods to run transactions are run(java.util.function.Consumer<com.couchbase.transactions.AttemptContext>, com.couchbase.transactions.config.PerTransactionConfig)
and reactive
.
Certain configurations, including the default one, will create background resources including cleanup threads, so it is highly recommended that an application create and reuse just one Transactions object.
Modifier and Type | Method and Description |
---|---|
void |
close()
Close all resources opened by this instance.
|
TransactionResult |
commit(TransactionSerializedContext serialized)
Commits a deferred transaction, using a default
PerTransactionConfig |
TransactionResult |
commit(TransactionSerializedContext serialized,
PerTransactionConfig perConfig)
Commits a deferred transaction.
|
TransactionConfig |
config()
Returns the
TransactionConfig used to create this instance. |
static Transactions |
create(com.couchbase.client.java.Cluster cluster)
Create a Transactions object using the default
TransactionConfig . |
static Transactions |
create(com.couchbase.client.java.Cluster cluster,
TransactionConfig config)
Create a Transactions object using the provided
TransactionConfig . |
static Transactions |
create(com.couchbase.client.java.Cluster cluster,
TransactionConfigBuilder config)
Create a Transactions object using the provided
TransactionConfigBuilder . |
TransactionsReactive |
reactive()
Returns an
TransactionsReactive , which allows transactions to be run in an asynchronous manner. |
reactor.core.publisher.Mono<TransactionResult> |
reactive(java.util.function.Function<AttemptContextReactive,reactor.core.publisher.Mono<java.lang.Void>> transactionLogic)
A convenience wrapper around
TransactionsReactive.run(java.util.function.Function<com.couchbase.transactions.AttemptContextReactive, reactor.core.publisher.Mono<java.lang.Void>>, com.couchbase.transactions.config.PerTransactionConfig) , that provides a default PerTransactionConfig . |
reactor.core.publisher.Mono<TransactionResult> |
reactive(java.util.function.Function<AttemptContextReactive,reactor.core.publisher.Mono<java.lang.Void>> transactionLogic,
PerTransactionConfig perConfig)
|
TransactionResult |
rollback(TransactionSerializedContext serialized)
Rolls back a deferred transaction, using a default
PerTransactionConfig |
TransactionResult |
rollback(TransactionSerializedContext serialized,
PerTransactionConfig perConfig)
Rolls back a deferred transaction.
|
TransactionResult |
run(java.util.function.Consumer<AttemptContext> transactionLogic)
Runs supplied transactional logic until success or failure.
|
TransactionResult |
run(java.util.function.Consumer<AttemptContext> transactionLogic,
PerTransactionConfig perConfig)
Runs supplied transactional logic until success or failure.
|
public static Transactions create(com.couchbase.client.java.Cluster cluster)
TransactionConfig
.cluster
- a Couchbase Cluster
objectpublic static Transactions create(com.couchbase.client.java.Cluster cluster, TransactionConfig config)
TransactionConfig
.cluster
- a Couchbase Cluster
objectconfig
- a TransactionConfig
public static Transactions create(com.couchbase.client.java.Cluster cluster, TransactionConfigBuilder config)
TransactionConfigBuilder
.
Provided as a convenience method to the TransactionConfigBuilder
does not have to be explicitly built.
cluster
- a Couchbase Cluster
objectconfig
- a TransactionConfigBuilder
public TransactionConfig config()
TransactionConfig
used to create this instance.public TransactionResult run(java.util.function.Consumer<AttemptContext> transactionLogic, PerTransactionConfig perConfig) throws TransactionFailed
The supplied transactional logic will be run if necessary multiple times, until either:
TransactionConfigBuilder.expirationTime(Duration)
} configuration parameter.
The transaction logic Consumer
is provided an AttemptContext
, which contains methods allowing it
to read, mutate, insert and delete documents, as well as commit or rollback the transaction.
If the transaction logic performs a commit or rollback it must be the last operation performed. Else a TransactionFailed
will be thrown. Similarly, there cannot be a commit
followed
by a rollback, or vice versa - this will also raise a TransactionFailed
.
If the transaction logic does not perform an explicit commit or rollback, then a commit will be performed anyway.
transactionLogic
- the application's transaction logicperConfig
- the configuration to use for this transactionTransactionResult
, as success is implied by the lack of a
thrown exception. It contains information useful only for debugging and logging.TransactionFailed
- or a derived exception if the transaction fails to commit for any reason, possibly
after multiple retries. The exception contains further details of the errorpublic TransactionResult run(java.util.function.Consumer<AttemptContext> transactionLogic) throws TransactionFailed
run(java.util.function.Consumer<com.couchbase.transactions.AttemptContext>, com.couchbase.transactions.config.PerTransactionConfig)
that provides a default PerTransactionConfig
TransactionFailed
public TransactionsReactive reactive()
TransactionsReactive
, which allows transactions to be run in an asynchronous manner.public reactor.core.publisher.Mono<TransactionResult> reactive(java.util.function.Function<AttemptContextReactive,reactor.core.publisher.Mono<java.lang.Void>> transactionLogic, PerTransactionConfig perConfig)
public reactor.core.publisher.Mono<TransactionResult> reactive(java.util.function.Function<AttemptContextReactive,reactor.core.publisher.Mono<java.lang.Void>> transactionLogic)
TransactionsReactive.run(java.util.function.Function<com.couchbase.transactions.AttemptContextReactive, reactor.core.publisher.Mono<java.lang.Void>>, com.couchbase.transactions.config.PerTransactionConfig)
, that provides a default PerTransactionConfig
.@Stability.Volatile public TransactionResult commit(TransactionSerializedContext serialized, PerTransactionConfig perConfig)
serialized
- the serialized context for the deferred transaction@Stability.Volatile public TransactionResult commit(TransactionSerializedContext serialized)
PerTransactionConfig
serialized
- the serialized context for the deferred transaction@Stability.Volatile public TransactionResult rollback(TransactionSerializedContext serialized, PerTransactionConfig perConfig)
serialized
- the serialized context for the deferred transaction@Stability.Volatile public TransactionResult rollback(TransactionSerializedContext serialized)
PerTransactionConfig
serialized
- the serialized context for the deferred transactionpublic void close()
close
in interface java.lang.AutoCloseable