…ggregate In this PoC, it is no longer necessary to extends from Axon's AggregateRoot classes. Instead, it's enough to add some annotations to fields. The apply() method is made statically available to register and apply generated events.
When an exception occurs in the Disruptor, by default, that thread is terminated. In the case of the AsyncAnnotatedSagaManager, this means that processing of Events will ultimately stop. Issue #AXON-58 Fixed
The SagaManager should not create a Saga instance if the association value resolves to null. The AsyncAnnotationSagaManager did not check this, causing NPE's further on. Now, the values are properly checked.
Exceptions thrown by Saga handlers are now ignored, instead of propagated. Propagation would result in the failure of the manager as a whole (reporting exceptions in the log). Now, it logs the failure and continues processing the other Sagas.
By changing the way the batching is done by the query, performance is improved dramatically, especially for the batches beyond the first million (selecting 1000 records after the first 1.000.000 took nearly 4 minutes, now 200ms) Issue #AXON-57 Fixed
When a transactional-bound Unit of Work is active, the AMQPConnector will verify whether the channel is open before the transaction is committed. This improves the chance that the transaction commit is successfully followed by a commit on the AMQP Channel.
…anager From within a spring context, the transaction-manager attributes may point to either a PlatformTransactionManager (Spring) or a TransactionManager (Axon) object. Issue #AXON-54 Fixed
…ctions UnitOfWork is now "transaction aware", meaning that it can be bound to a transaction. When that is the case, an additional UnitOfWorkListener method will be invoked: onPrepareTransactionCommit, which allows logic to be executed after storage and publication of events, but just prior to the commit of a transaction. This also means that the (Spring)TransactionInterceptor is deprecated. Instead, one should set the TransactionManager directly on the Command Bus. Issue #AXON-53 Fixed
There is a Command Handler intereceptor that can be configured that wraps all generated events in a SerializationAware version. This allows serializing components to optimize by preventing duplicate serialization. The disruptor command bus now has support for threads dedicated to pre- serialization using this mechanism. The publishing thread will then be able to access the serialized version of payload and meta data right away. Issue #AXON-51 Fixed
The Saga manager would not always correctly start new sagas when multiple saga types were configured. Issue #AXON-52 Fixed
This allows for different commands to have the same payload type. Although probably not used in many cases, some Axon features (to come) will rely on this capability. Issue #AXON-49 Fixed