Axon 3.1 has been released! This release is packed with improvements and some exciting new features.
Some of the highlights:
Meet the new member in the Axon family: the Query Bus. We’ve had many questions about why this component wasn’t available. Until recently, we believed queries to be just-like-usual. However, we’ve noticed that queries have interesting patterns. The QueryBus makes these easy to use and, more importantly, completely location transparent. Give it a spin and let us know what you think.
Another addition that we had coming for a while is parallel processing on the TrackingProcessor. While it was limited to a single thread (and this a single active node) in 3.0, this release adds the possibility to define any number of segments that can be processed concurrently. It doesn’t matter whether these segments are processed by threads on the same machine, or on different machines. Check out the Configuration API to find out how you can activate parallel processing on your processor.
It is now possible to selectively route events through the entities in an Aggregate. Especially when an entity would refer to a list of Entities, it could feel awkward that each of those entities receives each event, even if only a single (specified) entity should receive it. The @AggregateMember annotation allows you to specify whether you want to publish to all child entities, or selectively.
The SagaConfiguration has been improved to allow more customizations without having to resort to building entire Processor configurations. This is also true for Spring Boot based configuration, where it is now easier to customize configuration for an @Saga annotated bean.
Another new feature is the ability to configure a separate event serializer in the Configuration API (or Spring Boot Autoconfiguration). This serializer would only be used to serialize events, while other components that are serialized (such as snapshots, Sagas, cache entries) use the generic serializer. This allows you to use a serializer that imposes less design restrictions on the classes to serialize, such as XStream, while also keeping control over how events are serialized and stored for the long term.
For more details on all the changes in this release, check out the resolved issues in this release.