It has taken a little longer than anticipated, but it is finally here: the first milestone of the Axon 2 release. It gives a sneak preview to the new features that will be available in the 2.0 version.
New features in this milestone are:
- Major Domain Model refactoring. Your Events no longer need to extend from abstract Axon classes. This improves interoperability with other applications. All information that Axon needs is added to obects that are wrapped around the Event, such as the EventMessage.
- More efficient storage possibilities in Event Stores. Due to the domain modelling changes, Event Stores are more efficient when reading from them. The Payload (your actual Event) and Meta Data are serialized separately from Axon’s information, which allows the Event Store to delay deserialization of Events until they are actually used. This means Events are not deserialized at all if an Event is not being used.
- More powerful upcasting. Axon 2 supports one-to-many and many-to-one type upcasting. That means one “old” event can be turned into several new ones, as well as vice-versa. Furthermore, the Upcasters can work on any intermediate representation they like. Axon will automatically attempt to convert intermediate representations to the required format. By default,
Document(if Dom4J is on the classpath) are supported.
- The new Distributed Command Bus allows you to connect Command Bus instances in multiple JVM’s. The JGroupsConnector allows these instances to be added and removed at runtime. Commands are automatically load-balanced between instances.
- The Disruptor Command Bus uses a ringbuffer to process commands. This increases Command processing speeds by 300% (that’s 4 times faster). It is currently limited to only support a single Event Sourced Aggregate type per Command Bus instance.
- The Spring AMQP Terminal for the ClustingEventBus allows you to connect Event producers and Event consumers using an AMQP Message Broker, like Rabbit MQ.
- From this version on, the Mongo Event Store is a full citizen of the Axon framework. It includes a Serializer that writes to the BSON format to allow for efficient storage in a Mongo Database.
Even with all these features in place, it is still “just” a milestone. There is a lot more to come. For example:
- More flexible support for the DisruptorCommandBUs, allowing any type of Aggregate to be used
- Point to Point connector for the Command Bus and Event Bus to support more simple setups
- Easier configuration of the new building blocks using Spring’s namespace support
- Improve storage efficiency of Mongo Event Store
- JPAEventStore Migration tool to Migrate Axon 1 Event Stores to the new Axon 2 format
If you want to give Axon 2 a try, check out the downloads page. Have fun!