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 axoniq-legacy, used to drain Saga instances that started in Axon Framework 4 to allow an easy upgrade to Axon Framework 5. Supports all previous SagaStore implementations.

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 Converter due to incompatibility with new JDK versions. Axoniq Framework’s axoniq-legacy module ships a deprecated, opt-in XStreamConverter to read and write data an Axon Framework 4 node serialized with XStream, so it is not a full replacement

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 SnapshotStore) but a concrete implementations needs to be provided at the user’s discretion. Axoniq Framework provides an actual implementation optimized for Axon Server.

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 EventGateway, and you’re done.

Event Scheduling - Legacy support

X

—

✓

5.5.0

Part of axoniq-legacy, used to drain already scheduled events in Axon Framework 4 to allow an easy upgrade to Axon Framework 5. Supports all previous EventScheduler implementations.

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 CommandGateway, and you’re done.

Deadline Manager - Legacy support

X

—

✓

5.4.0

Part of axoniq-legacy, used to drain already scheduled deadlines in Axon Framework 4 to allow an easy upgrade to Axon Framework 5. Supports all previous DeadlineManager implementations.

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.