class AsyncTransactions extends AnyRef
An asynchronous version of Transactions, allowing transactions to be created and run in an asynchronous manner using scala.concurrent.Future.
- Alphabetic
- By Inheritance
- AsyncTransactions
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Value Members
- def run(transactionLogic: (AsyncTransactionAttemptContext) => Future[Unit]): Future[TransactionResult]
A convenience overload of AsyncTransactions.run() that provides default options.
- def run(transactionLogic: (AsyncTransactionAttemptContext) => Future[Unit], options: TransactionOptions): Future[TransactionResult]
Runs the supplied transactional logic until success or failure.
Runs the supplied transactional logic until success or failure.
This is the asynchronous version of Transactions.run(), so to cover the differences:
- The transaction logic is supplied with a AsyncTransactionAttemptContext, which contains asynchronous methods to allow it to read, mutate, insert and delete documents.
- The transaction logic should return a
Future[Unit]
. - This method returns a
Future[TransactionResult]
, which should be handled as a normal Scala Future.
- transactionLogic
the application's transaction logic
- options
the configuration to use for this transaction
- returns
there is no need to check the returned TransactionResult, as success is implied by the lack of a raised Future.failed(). It contains information useful only for debugging and logging. Will return Future.failed(TransactionFailedException) or a derived exception if the transaction fails for any reason, possibly after multiple retries. The exception contains further details of the error.