I’m working on a new software package in the financial industry, and we are evaluating Axon as a possible framework. The technology stack we intend to use includes spring boot and mongodb. Because of the nature of our software we need to be able to guarantee all events be properly stored in the database and that events make it to all appropriate handlers. My impression is that using mongodb for the event store does not allow us to guarantee event writes that originate from a single command but may span different aggregate root types (think of a money transfer use case). Is this a correct assessment? Is there any place in the framework where changes could be made to do a two phase commit to all events for a unit of work?
My second question has to do with scalability. I didn’t see any issues with the Distributed Command Bus, but on the event handling side there seems to be a bottleneck. My impression is that all events must be handled by one and only one instance of an event handler. Is there any way to distribute that processing across more than one JVM?
Are there any other issues that will need to be address like specific configurations for the event bus that are necessary to guarantee a hardened system?