Today, we’ve released Axon 2.0 Milestone 2. This release introduces a number of features that make it even easier to build your application.

The new features since the first milestone are:

Command Gateway: You can now define your own interface to the Command Bus. And with interface, we mean interface. Axon will automatically create the implementation for you based on the method signatures.

Automatic deadlock detection: If you run your Sagas in the same thread as the command and event handling, you don’t need to fear deadlocks anymore. Axon will detect them before they occur.

Asynchronous Cluster implementation: A cluster that allows you to process events asynchronously from the publishing thread. The asynchronous cluster replaces the asynchronous event listener in Axon 1. This makes configuration a lot simpler, without compromising on possibilities.

CommandDispatchInterceptor: This new interceptor is invoked on the dispatching thread, regardless of the Command Bus implementation chosen. This allows you to do validation before any remoting or other costly activities are undertaken.

Hibernate-specific performance updates: If you use Hibernate as JPA provider, Axon will automatically use some Hibernate specific features to improve performance and reduce memory usage on the JPAEventStore

More namespace support: Even more building blocks can be configured using Spring’s namespace support. The axon-amqp namespace allows you to easily configure a SpringAMQPTerminal, for axample.

And many more…

This milestone is a major, eh… milestone towards the final 2.0 release. Work is progressing quickly and it shouldn’t be long for the final release to be, eh… released.