What is the difference between Axon and a service bus?

Hi everyone,

I’m very new to CQRS and domain events. I have just finished Vaughn Vernon’s Implementing Domain-Driven Design and I find the concept of using domain events to integrate several bounded contexts very appealing.

However, it seems a service bus is needed for this integration to work. I’m not sure how Axon relates to a service bus. I’ve found tools like Mule ESB and Apache Camel which claim to be a service bus, but Axon defines itself as a CQRS and ES framework.

Does that mean that I still need a service bus to be used with Axon? or is Axon built on a custom made service bus? or does it take a whole other approach?

Note: I’m not looking for anything related to Event Sourcing, just a way to integrate several services hosted on different servers using domain events.


an ESB can be used to connect different applications/bounded contexts together. CQRS is used within a bounded context to make it easier to deal with specific non-functional requirements.

It’s not uncommon to see both in an application landscape. It is very easy to connect an Axon based application to another application. Often, an ESB is used to implement the actual connection between them.

Hope this helps.