Transaction management in a reactive context

Hi Armando,

Axon’s approach of finalizing a transaction is done through it’s TransactionManager, which is provided to the Unit of Work to correctly flow through the desired [prepare commit | commit | after commit | rollback | clean up] phases.
What Axon guarantees you, is that you do not have to programmatically define a transaction (like for example with the @Transactional annotation), as every message in the framework is dealt with through such a Unit of Work.
Having said that, you are right that Axon out of the box provides you the SpringTransactionManager, next to the plain interface (for you to implement) and the NoTransactionManager.

Due to this implementation I would indeed expect the Unit of Work to end once event handling is finalized, not taking into account Reactor’s Context notion (which replaces the ThreadLocal).
Finding a different solution would indeed be more reasonable at this point of time.
Note though that we have recently (this week) released the Axon Reactor Extension.
It doesn’t give you the solution you need right now, but it will, very likely, eventually.

Using the extension does require you to upgrade to a more recent version of Axon.
Version 3.4 is, to be honest, darned old already at the moment.
I would thus highly recommend to move over to the current version, which is 4.4.2.

Trusting this clarifies things for you Armando! Ow, and please note that the mailing list will be discontinued as specified in this thread.
Instead of this mailing list we have moved over to use a forum style of communication, findable at https://discuss-next.axoniq.io/.

Cheers,
Steven