Release Notes
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.
Release 4.3
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
@StartHandler
or@ShutdownHandler
.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
Configurer#onInitialize
,Configuration#onStart
andConfiguration#onShutdown
.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.
Both the
XStreamSerializer
andJacksonSerializer
provide a means to toggle on "lenient serialization" through their builders.Various test fixture improvements have been made, such as options to register a
HandlerEnhancerDefinition
,a
ParameterResolverFactory
and aListenerInvocationErrorHandler
.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.
The
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.
Release 4.2
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: theMultiStreamableMessageSource
.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.
The
TrackingToken
interface now provides an estimate of it's relative position in the event stream through theposition()
method.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.
Release 4.1
The
TrackingEventProcessor
now has an API to split and mergeTrackingTokens
during runtime of an application.Axon Server has additions to the UI to split and merge a given Tracking Event Processor's tokens.
Next to Dropwizard metrics the framework now also supports Micrometer metrics.
The
MessageMonitor
interface is used to allow integration with Micrometer.Lastly, we are incredibly thankful that this has been introduced as a community contribution.
Primitive types are now supported as
@QueryHandler
return types.In a similar fashion as the
CommandGateway
andQueryGateway
we have introduced theEventGateway
.As with the command and query version, the
EventGateway
provides a simpler API when it comes to dispatching Events on theEventBus
.
We refer to this page for a full list of all the changes.
Release 4.0
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
axon-messaging
package.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
EventProcessingConfigurer
.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.
Last updated