Packages

class ReactiveTransactions extends AnyRef

An asynchronous version of Transactions, allowing transactions to be created and run in an asynchronous manner.

Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. ReactiveTransactions
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Value Members

  1. def run(transactionLogic: (ReactiveTransactionAttemptContext) => SMono[Unit]): SMono[TransactionResult]

    A convenience overload of ReactiveTransactions.run() that provides default options.

  2. def run(transactionLogic: (ReactiveTransactionAttemptContext) => SMono[Unit], options: Option[TransactionOptions] = None): SMono[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 ReactiveTransactionAttemptContext, which contains asynchronous methods to allow it to read, mutate, insert and delete documents.
    • The transaction logic should run these methods as a Reactor chain - as standard with reactive programming.
    • The transaction logic should return a SMono[Unit].
    • This method returns a SMono[TransactionResult], which should be handled as a normal Reactor SMono.
    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 exception. It contains information useful only for debugging and logging.

    Exceptions thrown

    [[TransactionFailedException]] or a derived exception if the transaction fails to commit for any reason, possibly after multiple retries. The exception contains further details of the error.