I would like to announce that Axon Framework release 4.5. has been released on the 31th of March 2021. This release has seen numerous addition towards Axon Framework. The most interesting adjustments can be seen down below.
Note that the BOM (as marked in #1200) is not released yet, but will be soon! For those interested, the BOM repository can be found here.
For an exhaustive list of all adjustments made for release 4.5 you can check out this page.
Without further ado, let me give you the most interesting additions to framework:
-
A new type of
EventProcessor
has been introduced in pull request #1712, called thePooledStreamingEventProcessor
. ThisEventProcessor
allows the same set of operations as theTrackingEventProcessor
, but uses a different threading approach for handling events and processing operations. In all, this solution provides a more straightforward processor implementation and configuration, allowing for enhanced event processing in general. For specifics on how to configure it, check out this section. -
Sagas support the use of Deadline Handlers, but an
@DeadlineHandler
annotated method couldn’t automatically close a Saga with the@EndSaga
annotation. This enhancement has been described in #1469 and resolved in pull request #1656. As such, as of Axon 4.5, an@DeadlineHandler
annotated can also be annotated with@EndSaga
, to automatically close the Saga whenever the given deadline is handled. -
Whenever an application uses snapshots, the point arises that old snapshot versions need to be invalidated when loading an Aggregate. To that end the
SnapshotFilter
can be configured. As a simplified solution, the@Revision
annotation can now be placed on the Aggregate class to automatically configure a revision basedSnapshotFilter
. Due to this, old snapshots will be filtered out automatically when an Aggregate is reconstructed from theEventStore
. For those interested, the implementation of this feature can be found here. -
At the basis of Axon’s message handling functionality, is the
MessageHandlingMember
. For the time being, the sole implementation of this is theAnnotatedMessageHandlingMember
, which expect the use of annotations like the@CommandHandler
and@EventHandler
, for example. As a step towards constructing an annotation-less approach, #1621 was introduced into the framework. The first steps taken in this pull request are the deprecation of annotation-specific methods from theMessageHandlingMember
interface. Added to this is a new approach towards defining attributes of a message handling member throughHandlerAttributes
.