Author Archive

Axon 3.2 released

Axon 3.2 has been released. It contains a number of API improvements, as well as some fixes to issues found in 3.1.x versions.

One major new feature is the addition of an API call to initiate a “reset” of a tracking event processors. This reset effectively causes a replay of the processor. Event Handling components can be notified of this reset by implementing an @ResetHandler annotated method. Furthermore, events that are delivered as part of a “replay” (i.e. events that had already been published at the time the processor was reset) can be ignored by a handler by annotating it with @AllowReplay(false), or alternatively by adding a parameter of type ReplayStatus.

Another improvement is an API to check the processing status of a Tracking Event Processor. It now exposes information of each Processing Segment (i.e. Thread), such as whether it is replaying, whether it is still catching up with historic events (after replay or fresh start) and the token of the last event that has been processed. This allows for blue-green deployments to wait switching between Blue and Green until all processors have caught up.

The last highlighted feature of this release is an improvement on the Query API. It is now easier to query for a collection of certain result types using the QueryGateway, using queryGateway.query(myQueryObject, ResponseTypes.multipleInstancesOf(MyResponseType.class)). This reduces the need for casting of generic types or building of container types when explicitly querying for collections.

Check out the release notes for details.

Posted in: News, Release notes

Leave a Comment (0) →

Axon 3.1.1 released

Just before the holiday season, we’ve released version 3.1.1. It solves a few issues encountered in the 3.1 version.

The two most notable fixes a fix where a classcast exception would occur if an @AggregateMember annotated field implementa Iterable, but not Collection. While in Java itself those are very rare, some external libraries chose not to implement Collection for some classes. The was related to multi-threaded processing, where a processor would always try to update the claim timeout for segment 0, even if the thread was processing another segment. While this would not have major impact on single-node processors, multi-node processors would get UnableToClaimTokenExceptions.

Some other minor issues have been fixed, too. Check out the release notes for details.

Posted in: News, Release notes

Leave a Comment (0) →

Axon 3.1 Released

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.

Posted in: News, Release notes

Leave a Comment (0) →

Axon 3.0.7 Released

Axon 3.0.7 has been released and is available for download on the website, and Maven Central.

This release comes with a few fixes for issues found in earlier versions:

When a nested Unit of Work is rolled back, the events published by that Unit of Work (as well as any side-effects) are prevented from being published. Under certain conditions, in previous versions, it was possible that these changes were committed as part of the parent Unit of Work.

When TrackingProcessors take a long time processing an event, it was possible that two instances of the same processor, running on different nodes, would think they both owned the claim. 3.0.7 contains a fix that will ensure only a single instance believes it holds the claim, and prevents it from being “stolen” while the processor is processing an event.

In certain conditions, when an EventBus was defined under another name than “eventBus”, Spring would complain about the bean called “eventBus” not being available. This has been fixed in the 3.0.7 release.

Very rarely, a TrackingProcessor would generate a StackOverflowException while attempting to start reading from the “live events” stream. A fix is included to prevent the processor ending up in an infinite loop while trying to do so. It will now only attempt once each event cycle.

For more details on changes, check out the GitHub issues page.

Posted in: News, Release notes

Leave a Comment (0) →

Axon 3.0.5 Released

We have released Axon 3.0.5. It contains a few fixes and improvements

One of the improvements is for users that have migrated from Axon 2.4, allowing data stored in that version to still be used (as-is) in 3.0. Support for this is available in the ‘axon-legacy’ module.

The Event Store was unable to cope with timestamps that were stored in another timezone than UTC. The parser has been changed, so that times with explicit timezones are properly converted to an Instant.

The GenericJpaRepository was unable to work with aggregate identifiers other than String. In this release, a converter can be specified that converts the String value used in the Repository API to the value to use in the EntityManager API.

The GenericJpaRepository now loads entities using a write lock from the database. This ensures that an aggregate is only active on a single node at a time and prevents deadlocks when multiple threads attempts to upgrade the read lock to a write lock.

For a detailed overview of changes, check the release notes.

Posted in: News, Release notes

Leave a Comment (0) →
Page 1 of 10 12345...»