Axon Framework and Axoniq Framework
For those using or looking to use the Framework, you may be wondering: "What is the difference between Axon and Axoniq Framework?" This page will break that down for you, as well as explain how to use both and which features can be found where.
Axon Framework is the open-source foundation for building message-driven, event-sourced applications on the JVM. It provides the core messaging infrastructure (commands, events, and queries), modeling support, event sourcing, and test fixtures, and is released under the Apache 2.0 license.
Axoniq Framework builds on top of Axon Framework and adds advanced modules. These modules cover scenarios that go beyond the open-source baseline, such as PostgreSQL-optimized event storage, distributed messaging, sequenced dead-letter queue support, data protection, and connectivity to Axon Server. Axoniq Framework modules are commercial offerings under the Axoniq Terms of Service, and require an active license for production use.
For an overview of the features in Axon Framework and Axoniq Framework, be sure to check the Feature comparison table. However, you do not have to jump to this table to understand what is in Axon or in Axoniq Framework. You will find this icon to mark Axoniq Framework features throughout the documentation. When no such icon is present, you are dealing with Axon Framework features.
So, in short:
-
Axon Framework: the open-source core. Free to use, including in production, covering the bases to support messaging, modeling, and event sourcing.
-
Axoniq Framework: the commercial modules on top of Axon Framework, providing advanced and production-grade capabilities.
How to use Axon and Axoniq Framework
Just as any library or framework, to use Axon and Axoniq Framework, you can simply depend on either.
Axon Framework modules are marked with org.axonframework, whereas Axoniq Framework modules are marked with io.axoniq.framework. For a full list of all the modules, be sure to check out this page.
Axon Framework being Apache 2.0 means you can use it whenever, wherever. Axoniq Framework modules, however, validate a license at startup and fall under the Axoniq Terms of Service.
For everything on obtaining a license, configuring credentials, evaluating, feature entitlement, message throughput limits, and what happens when a subscription changes or lapses, see the Axoniq Platform licensing reference.
Feature comparison
The table belows compares features between Axon Framework and Axoniq Framework. If a feature you expect is missing from this table, be sure to file a concern with the Framework team.
The table mentions the feature in question, whether it is a part of Axon and/or Axoniq Framework, since what version it is or will be present, and an optional description. The version columns start at 5.0.0 and go up, regardless of whether the feature existed before Framework 5.
The "Axon Framework" and "Axoniq Framework" columns may contain any of the following:
-
✓ - The feature is present.
-
X - The feature is not present.
-
Partial - The feature is present partially. Expect a description
-
TBD - Stands for "to be determined." Will change accordingly once planned by the Framework team
Lastly, some rows describe a feature that is no longer present in Framework 5. They are present in the table as a marker for people migrating from 4 (or lower) to 5. If you depended strongly on any of the removed features, be sure to reach out.
| Feature | Axon Framework | Axon Framework Version | Axoniq Framework | Axoniq Framework Version | Description |
|---|---|---|---|---|---|
Core API |
|||||
Unit of Work |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Command / Event / Query messages |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Message metadata |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Message streams |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Message Handlers |
✓ |
5.0.0 |
✓ |
5.1.0 |
Supports both synchronous and asynchronous programming models |
Command Dispatching and Handling |
|||||
Command Dispatching API |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Declarative Command Handlers |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Annotated Command Handlers |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Stateful Command Handlers |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Distributed Command API |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Distributing Commands - Axon Server integration |
X |
— |
✓ |
5.1.0 |
|
Distributing Commands - Spring Cloud integration |
X |
— |
✓ |
5.4.0 |
|
Distributed Command Priority |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Distributing Commands - JGroups integration |
X |
— |
X |
— |
Deprecated and removed as of Axon Framework 5 |
Disruptor Command Bus |
X |
— |
X |
— |
Deprecated and removed as of Axon Framework 5 |
Event Publishing and Handling |
|||||
Event Publishing API |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Declarative Event Handlers |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Annotated Event Handlers |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Stateful Event Handlers |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Event publishing and handling - AMQP integration |
X |
— |
✓ |
TBD |
|
Event publishing and handling - Kafka integration |
X |
— |
✓ |
5.5.0 |
|
Query Dispatching and Handling |
|||||
Query Publishing - Direct Query API |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Query Publishing - Scatter-gather API |
X |
— |
X |
— |
Deprecated and removed as of Axon Framework 5 |
Query Publishing - Subscription Query API |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Query Publishing - Streaming Query API |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Declarative Query Handlers |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Annotated Query Handlers |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Stateful Query Handlers |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Distributed Query API |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Distributing Queries - Axon Server integration |
X |
— |
✓ |
5.1.0 |
|
Distributing Queries - Spring Cloud integration |
X |
— |
✓ |
5.4.0 |
|
Distributed Query Priority |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Modeling / Entities |
|||||
Command Model / Entity API |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Declarative Entity Configuration |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Annotated Entity Configuration |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Entity Hierarchy API |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Event Sourced Entity support |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
State-based Entity support |
TBD |
— |
TBD |
— |
This feature reflects the JPA storage support for Aggregates from previous versions |
Entity Caching |
X |
— |
✓ |
TBD |
May be replaced by overall event stream caching. Investigation will start in 5.5.0. |
Entity Creation Policy |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Aggregate Conflict Resolution |
X |
— |
X |
— |
Deprecated and removed as of Axon Framework 5 |
Event Store |
|||||
Event Store - DCB API |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
DCB Event Storage - Axon Server integration |
X |
— |
✓ |
5.1.0 |
|
DCB Event Storage - JPA support |
TBD |
— |
TBD |
— |
|
DCB Event Storage - PostgreSQL integration |
X |
— |
✓ |
5.1.0 |
|
Event Store - Aggregate API |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Aggregate-based Event Storage - Axon Server integration |
X |
— |
✓ |
5.1.0 |
|
Aggregate-based Event Storage - JPA support |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Aggregate-based Event Storage - JDBC support |
TBD |
— |
TBD |
— |
|
Aggregate-based Event Storage - Mongo integration |
X |
— |
X |
— |
Deprecated and removed as of Axon Framework 5 |
Event Processing |
|||||
Event Processing API |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Subscribing Event Processors |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Streaming Event Processors |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Event Sequencing |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Event Processing Replays |
✓ |
5.1.0 |
✓ |
5.1.0 |
|
Token Store API |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
JPA Token Store |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
JDBC Token Store |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Mongo Token Store |
X |
— |
✓ |
5.5.0 |
|
Persistent Stream integration |
X |
— |
✓ |
5.2.0 |
|
Multi-Source Event Streaming |
X |
— |
✓ |
5.1.0 |
|
Sequenced Dead-Letter Queue API |
X |
— |
✓ |
5.1.0 |
|
Sequenced Dead-Letter Queue - JPA support |
X |
— |
✓ |
5.1.0 |
|
Sequenced Dead-Letter Queue - JDBC support |
X |
— |
✓ |
5.1.0 |
|
Sequenced Dead-Letter Queue - Mongo integration |
X |
— |
✓ |
5.5.0 |
|
Process Management |
|||||
Workflows |
X |
— |
✓ |
5.1.0 |
Follows the "Durable Execution" paradigm, fully replacing Saga support from previous versions, as well as supporting many other process management styles |
Saga pattern integration |
X |
— |
X |
— |
Replaced fully with the Workflow integration |
Saga - Legacy support |
X |
— |
✓ |
5.4.0 |
Part of |
Message Interceptors |
|||||
Message Dispatch Interceptors |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Message Handler Interceptors |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Declarative Message Handling Component Interceptors |
✓ |
5.2.0 |
✓ |
5.2.0 |
|
Annotated Message Handling Component Interceptors |
✓ |
5.2.0 |
✓ |
5.2.0 |
|
Declarative Exception Handlers |
✓ |
5.2.0 |
✓ |
5.2.0 |
|
Annotated Exception Handlers |
✓ |
5.2.0 |
✓ |
5.2.0 |
|
Message Handler Timeout support |
✓ |
5.4.0 |
✓ |
5.4.0 |
|
UnitOfWork Timeout support |
✓ |
5.4.0 |
✓ |
5.4.0 |
|
Conversion, versioning, and upcasting |
|||||
Conversion / Serialization |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Conversion - Jackson integration |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Conversion - Avro integration |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Conversion - Data Protection integration |
X |
— |
✓ |
5.1.0 |
|
Command Versioning |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Event Versioning |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Query Versioning |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Upcasting |
Partial |
5.2.0 |
✓ |
5.2.0 |
Marked partial for Axon Framework as message handlers can receive the payload in any format. Hence, upcasting can be done specific to a message handler at the user’s discretion. Support in Axoniq Framework is more extensive, with implementable components and guard rails |
Conversion - XStream integration |
X |
— |
Partial |
5.4.0 |
Removed as a general-purpose |
Snapshotting |
|||||
Integrated Command Model / Entity Snapshotting |
Partial |
5.1.0 |
✓ |
5.1.0 |
Marked partial for Axon Framework, as it solely provides the API for snapshot storage (the |
Generic Entity Snapshotting |
X |
— |
TBD |
— |
|
Event Scheduling and Deadline Management |
|||||
Event Scheduling API |
X |
— |
X |
— |
Deprecated and removed as of Axon Framework 5 due to ease for custom implementation. In short, select a scheduling tool and use the |
Event Scheduling - Legacy support |
X |
— |
✓ |
5.5.0 |
Part of |
Deadline Manager API |
X |
— |
X |
— |
Deprecated and removed as of Axon Framework 5 due to ease for custom implementation. In short, select a scheduling tool and use the |
Deadline Manager - Legacy support |
X |
— |
✓ |
5.4.0 |
Part of |
Test fixtures |
|||||
Test Fixtures - Entity support |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Test Fixtures - Workflow support |
X |
— |
✓ |
5.1.0 |
|
Test Fixtures - Projection support |
TBD |
— |
TBD |
— |
|
Test Fixtures - Command Handler support |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Test Fixtures - Event Handler support |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Test Fixtures - Query Handler support |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Configuration-based Testing |
TBD |
— |
✓ |
TBD |
|
Monitoring and tracing |
|||||
Correlation Data |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Monitoring API |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Monitoring - Dropwizard integration |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Monitoring - Micrometer integration |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Distributed Tracing |
X |
— |
✓ |
5.3.0 |
|
Multi-tenancy |
|||||
Multi-Tenancy support |
X |
— |
✓ |
5.3.0 |
|
Dependency Injection integration |
|||||
Spring Framework integration |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Spring AOT integration |
TBD |
— |
TBD |
— |
|
Quarkus integration |
✓ |
TBD |
✓ |
TBD |
|
Micronaut integration |
✓ |
TBD |
✓ |
TBD |
|
Language/Library integration |
|||||
Kotlin integration |
✓ |
5.1.0 |
✓ |
5.1.0 |
|
Reactor integration |
✓ |
5.1.0 |
✓ |
5.1.0 |
|
Configuration and tooling |
|||||
Configuration API |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Modularized Configuration support |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Lifecycle Handlers |
✓ |
5.0.0 |
✓ |
5.1.0 |
|
Migration support |
✓ |
5.1.1 |
✓ |
5.1.1 |
|
Feature-based project modularization |
X |
— |
✓ |
5.1.0 |
Means a module-per-feature is used, providing more granular dependencies when desired. |