Axon Framework - Release 4.5.5

As of the 24 of November, we have released Axon Framework 4.5.5.
Everybody who’s planning to move to the latest release of Spring Boot (2.6.0), we recommend upgrading to this version of Framework as well.

Here is an exert of the most interesting changes made in this release:

  • The auto-configuration we introduced for XStream used a suboptimal approach.
    We assumed searching for the @ComponentScan would suffice but didn’t consider that Spring enabled SpEL operations in the annotation’s properties.
    This approach thus caused some applications to break on start-up.
    As such, this approach is replaced entirely by using the outcome of the AutoConfigurationPackages#get(BeanFactory) method.
    For those interested in the details of the solution, check out this pull request. Kudos to contributor maverick1601 for drafting issue #1963 explaining the predicament.

  • We introduced an optimization towards updating the TrackingToken.
    In (distributed) environments where the configuration states several segments per Streaming Processor, there are always threads receiving events that they’re not in charge of due to the configured SequencingPolicy.
    The old implementation eagerly updated the token in such scenarios, but this didn’t benefit the end-user immediately.
    Pull request #1999 introduce a wait period for ‘event-less-batches’, for both the TrackingEventProcessor and PooledStreamingEventProcessor.
    This adjustment minimizes the number of token updates performed by both processor implementations.

  • The introduction of Spring Boot version 2.6.0 brought an issue to light within Axon’s Spring usage.
    The AbstractAnnotationHandlerBeanPostProcessor took FactoryBean instances into account when searching for message handling methods.
    This approach, however, is not recommended by Spring, which they enforced in their latest release.
    The result was circular dependency exceptions on start-up whenever somebody used Spring Boot 2.6.0.
    The fix was simple, though, as we should simply ignore FactoryBean instances.
    After spotting the issue, we resolved it in this pull request.

For an exhaustive list of all the changes, check out the 4.5.5 release notes.