AxonHub: the smart, unified messaging platform for commands, events and queries
Why choose AxonHub?
Reduce configuration management
When using AxonHub, a lot of configuration happens automatically. The main thing to configure, is for the Axon application components to know where the AxonHub nodes are. This will give them a place to send their messages to. However, if these components also have handlers for incoming messages, they will tell AxonHub which kinds of messages and maintain an open connection. This gives the AxonHub all information about which messages must go where – no further configuration of routes, topics, queues, service discovery or similar is required.
Smart routing of messages
AxonHub doesn’t inspect the full payload of messages, but does differentiate between commands, event and queries, and does understand essential metadata. This allows it to do smart routing of each message type. For instance, when routing commands it will make sure exactly one handler instance processes the command. It will also route such messages consistently, allowing for maximal efficiency due to caching. But when routing an event, it will be sent to all interested event handlers, rather than just one. Because AxonHub has more intelligence than a plain message bus, it can configure these routing patterns automatically.
Monitoring & traceability
AxonHub sits in a central place in your Axon application landscape and, through its smart routing capability, has a lot of information about what’s going on. AxonHub exposes this information to enable you to get superior insight into your Axon application landscape. It generates a graphical overview of AxonHub nodes, the various message handling components, and event stores, including all the connections between them. It also maintains a list of more detailed metrics about system, making them available through a GUI and an API.
Integrates with other messaging systems (Kafka, AMQP,…)
While AxonHub is a great platform for all message routing needs within your Axon application landscape, we understand that your real-world situation is more complex and there probably is a need to integrate with non-Axon systems as well. Many Axon Framework users nowadays use Kafka or AMQP for such inter-system messaging. AxonHub has a pluggable connector architecture to integrate with these and other messaging systems, relieving you of the task to do these integrations manually.
Easy to scale
AxonHub is designed for running Axon applications at scale. It can deal with many instances of the same types of message handlers, thus allowing horizontal scaling of microservice instances. The Standard and Enterprise editions offer more advanced features on top of this, such as fastest-preferred query balancing, support for autoscaling of handler instances, and a quality of service mechanism on messages. Although a single AxonHub instance can handle large numbers of messages per second, AxonHub itself can be clustered as well for high availability and increased throughput.
How do I implement AxonHub?
The beta-version of the developer edition can be downloaded for free below. If you want to explore the beta-version of one of the other edition, please contact us to obtain a free evaluation license.
The download package contains the manual, which describes the steps to follow in detail. On a high level, the process is like this:
The easiest configuration is one that also uses AxonDB (LINK). In this case, all 3 message categories will flow through AxonHub, and AxonHub will take care of storing events. Your application will not need to contact an event store directly. Therefore, you may want to start with downloading and running AxonDB. Alternatively, you could use AxonHub for commands and queries and configure a separate event store.
If you’re using Spring Boot, include the the AxonHub spring boot starter as a dependency of your project. (Which is open source and available in Maven Central.) This automatically configures AxonHub-backed versions of the command, event and query buses.
If not using Spring Boot, you can alternatively use the AxonHub client (also on Maven Central), which will also require you to include some code to configure the AxonHub versions of the buses.
Change axonhub.properties to point to your AxonDB instance, and run AxonHub.
Change the properties of your application to point your application to AxonHub, and run your application.
|Command, Event and Query Routing||√||√||√||√|
|Real-time architecture overview||√||√||√||√|
|Consistent Command Routing||√||√||√||√|
|Query Balancing||Round robin||Round robin||Fastest preferred||Customizable|
|QoS on messages||√||√|
|Node autoscaling trigger||√ (roadmap)||√ (roadmap)|
|Event Processor autoscaling||√ (roadmap)||√ (roadmap)|
|AxonHub cluster auto-balancing||√|
|SSL / TLS||√||√||√||√|
|Monthly||€ 0||€ 200 (per deployment)||€ 400 (first node)
€ 200 (additional nodes)
|request a quote|
Download the developers edition by filling the form here below.