All the enhancements and features which have been introduced to our major and minor release are documented here. This covers improvements to Axon Framework, Axon Server and the Axon Framework Extensions, since all three follow the same release cadence. For bug fixes per project, we refer to this page.
Aggregate Polymorphism has been introduced, allowing for an aggregate hierarchy as would come natural from a domain model.
The set this up, the
AggregateConfigurer#withSubtypes(Class... aggregates) method can be used.
In a Spring environment, an aggregate class hierarchy will be detected automatically.
For more details on this feature, read up on it here.
An Axon application will no shutdown more gracefully then it used to in previous releases.
This is achieved by marking specific methods in Axon's infrastructure components as a
A 'phase' is required in those, specifying when the method should be executed.
If you want to add your own lifecycle handlers,
you can either register a component with the aforementioned annotations
or register the methods directly through
We have introduced the
@CreationPolicy annotation which you can add to
@CommandHandler annotated methods in your aggregate.
Through this, it is possible te define if such a command handler should 'never', 'always' or 'create' an aggregate 'if-missing'.
For further explanation read the Aggregate Command Handler Creation Policy section.
JacksonSerializer provide a means to toggle on "lenient serialization" through their builders.
Various test fixture improvements have been made, such as options to register a
ParameterResolverFactory and a
Additionally validations have been added too, revolving around asserting scheduled events and deadline message.
The Test Fixture page has been updated to define these new operations accordingly.
TrackingEventProcessor#processingStatus method as of 4.3 exposes more status information.
The current token position, token-at-reset, is-merging and merge-completed position have been added to the set.
Read the Event Tracker Status section for more specifics on this.
For a complete list of all the changes made in 4.3 you can check out this page.
Axon Framework applications can now use tags to support a level of 'location awareness' between Axon clients and Axon Server instances.
This feature is further described here.
Axon Server already supported several contexts, but Axon Framework application could no specify to which context message should be dispatched.
The Axon Server Connector has been expanded with a
TargetContextResolver to allow just this.
A new implementation of the
StreamablbeMessageSource has been implemented: the
This implementation allow pairing several "streamable" message sources into a single source.
This can in turn be used to for example read events from several distinct contexts for a single Tracking Event Processor.
Handler Execution Exception now allow application specific information to be sent back over the wire in case of a distributed set up.
TrackingToken interface now provides an estimate of it's relative position in the event stream through the
Optional return types can now be used for Query Handling methods.
For a full list of all features, enhancements and bugs, check out the issue tracker.
TrackingEventProcessor now has an API to split and merge
TrackingTokens during runtime of an application.
Axon Server has additions to the UI to split and merge a given Tracking Event Processor's tokens.
Primitive types are now supported as
@QueryHandler return types.
In a similar fashion as the
QueryGateway we have introduced the
As with the command and query version, the
EventGateway provides a simpler API when it comes to dispatching Events on the
We refer to this page for a full list of all the changes.
The package structure of Axon Framework has changed drastically with the aim to provide users the option to pick and choose.
For example, if only the messaging components of framework are required, one can directly depend on the
In part with the package restructure, all components which leverage another framework to provide something extra have been given their own repository.
These repositories are called the Axon Framework Extensions.
The configuration of Event Processor has been replaced and greatly fine tuned with the addition of the
Some new defaults have been introduced in release 4.0, like a bias towards expecting a connection with Axon Server.
Another important chance is the switch from defaulting to Tracking Processors instead of Subscribing Processors.
The notion of a
CommandResultMessage has been introduced as a dedicated message towards the result of command handling.
To simplify configuration and more easily overcome deprecation,
the Builder pattern has been implemented for all infrastructure components.
For more details, check the list of issues here.