Reactor

Overlooking Axon Frameworks architecture, you can notice that in general systems using the framework are "Message Driven", "Responsive", "Resilient" and "Elastic". According to Reactive Manifestoarrow-up-right, the same holds for Reactive Systems in general.

Although we can state that Axon Framework is a type of reactive system, we can't say that it is fully reactive.

circle-info

Reactive programming is an approach to writing software that embraces asynchronous I/O. Asynchronous I/O is a small idea that portends big changes for software. The idea is simple: alleviate inefficient resource utilization by reclaiming resources that would otherwise be idle, as they waited for I/O activity. Asynchronous I/O inverts the normal design I/O processing: the clients are notified of new data instead of asking for it, which frees the client to do other work while waiting for these notifications.

By their nature, a reactive API and Axon are a great fit, as most of framework's operations are async and non-blocking. Providing a dedicated extension for this was thus a logical step to take. To that end, we chose to use Pivotal’s Project Reactorarrow-up-right to build this extension. Reactor builds on top of the Reactive Streamsarrow-up-right specification and is the de-facto standard for Java enterprise and Spring applications. As such, we feel it to be a great fit to provide an extension in, making Axon more reactive.

circle-info

Not all Axon components offer a reactive API, yet. We will incrementally introduce more "reactiveness" to this extension, giving priority to components where users can benefit the most.

To use the Axon Reactor Extensionarrow-up-right, make sure that axon-reactor module is available on the classpath.

最后更新于