Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

AxonFramework

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Axon Framework logo

Build modern event-driven systems with AxonIQ technology
Learn more at our website »

Axon Framework ·Axon Server ·AxonIQ Console


Axon Framework logo

The Axon Framework is an open source framework that's 100% Java and enables developers to build scalable and maintainable applications using a message-driven approach. It simplifies the complexities of developing distributed systems by providing a structured way to handle commands, events, and queries within your application.If you're not familiar with the Event Sourcing pattern, you can learn more about it on our website.

At its core, the Axon Framework encourages an architecture where components communicate through messages, which promotes loose coupling and increases flexibility. This messaging system allows different parts of your application to interact without needing to know the internal workings of each other, making your system more modular and easier to manage. If you already use tools and technologies that enable your applications to utilize a pub/sub pattern, then you already understand the basics of message driven and event driven architectures.

The Axon Framework further enhances your applications and services by enabling you to support Event Sourcing, a powerful architectural pattern where state changes are recorded as a sequence of events. Why is this important? Well, instead of just storing the current state in a traditional database, every change is logged, providing a complete history of how the data arrived at its current form. This can be incredibly useful for auditing, debugging, and even recreating past states of your application when necessary.

For JVM-based developers working with microservices, the Axon Framework offers tools to manage the complexities inherent in distributed systems. By leveraging its messaging and event-handling capabilities, you can build applications that are not only scalable and robust but also easier to extend and maintain over time.

How Can I Get Started with the Axon Framework?

We highly recommend all developers to get started by going to theAxonIQ Documentation Portal, which provides links to our tutorials, guides, and reference documentation.

Furthermore, below are several other helpful resources:



Axon Server logo

The AxonIQ Console is a management tool designed to maximize the effectiveness of applications developed with Axon Framework and supported through Axon Server. It facilitates near-zero configuration and provides a single platform for insight, management, control, and reporting of your application infrastructure.

Axon Framework logo

How to Get Started with AxonIQ Console

Numerous resources can help you on your journey in using Axon Framework.A good starting point isAxonIQ Documentation Portal, which provides links to our tutorials, guides, and reference documentation.

Furthermore, below are several other helpful resources:



Axon Server logo

For developers who are serious about Event Sourcing, we offer the Axon Server. The Axon Server is designed to simplify the development of event-driven applications by acting as both an Event Store and a message router. Therefore, it is as a central hub for managing and distributing events, commands, and queries within your application ecosystem. By handling these critical aspects, Axon Server allows developers to focus more on business logic rather than the complexities of communication and data storage in distributed systems.

When developing microservices, coordinating interactions between multiple services can become quite challenging. This is especially the case as the system scales to handle more users or additional features requested by customers and stakeholders. Axon Server addresses this by providing seamless and scalable message routing between services. It ensures that messages reach their intended targets and that events are efficiently broadcasted to all interested parties.

In addition to functioning as a message router, Axon Server enables apps and microservices to be Event Sourced. This means that all changes in the application state are stored as a sequence of events. This allows the application to reconstruct its state at any point in time by replaying these events. For developers unfamiliar with event sourcing, this means you have a complete history of what happened in your system, which is invaluable for debugging, auditing, and understanding complex behaviors. This is a revolutionary approach to traditional application development, however the architectural pattern is proven to create better and more resilient software systems.

By incorporating Axon Server into your applications, especially those built with microservices, you gain a robust platform for managing the flow of data and commands across your system. It abstracts the complexities of message handling and event storage, enabling you to build scalable, maintainable, and high-performing applications. This allows you to deliver features faster and adapt more readily to changing business requirements.

How Can I Get Started with Axon Server?

If you're getting started with the Axon Server, then we recommend that you go to theAxonIQ Documentation Portal, which provides links to our tutorials, guides, and reference documentation.

Furthermore, below are several other helpful resources:

Extensions

WhereAxon Framework contains the core functionality for event-driven application construction, the extensions add valuable integrations with other tools and languages to enhance Axon's capabilities.The extensions are intentionally split off from the main framework to not over encumber the user with unused functionality and obstruct the release cycles of the separate repositories.

The functionality of the extensions ranges from event streaming integrations withAMQP andKafka, database tooling likeMongo, and language-specific integrations as with theKotlin extension.For more details about each extension, we refer to the subsections below.

Contents

AMQP

TheAMQP Extension repository provides support for theAdvanced Message Queuing Protocol (AMQP).

Users can add this extension to, for example, include aRabbitMQ integration with their Axon Framework application.Setting up this integration allows you to publish Axon events to an AMQP exchange.Events can also be read from exchanges and handled by event processors, providing means of integrating with other services.

In doing so, you would enable (micro)service communication through event streaming.Or, you can attach a (third-party) application with your Axon Framework application, communicating through AMQP.

You should regard this extension as a partial replacement ofAxon Server as, compared to Axon Server, it only covers event streaming.

Please read theAMQP section of the documentation for more information about this extension.

JGroups

TheJGroups Extension repository enables integration withJGroups.

You can use this extension to enable command routing in a distributed environment.As command routing differs from, for example, load balancing REST operation, it is highly recommended to use a distributed command routing solution whenever you have several applications and/or application instances that need to communicate with one another.

The extension achieves this by implementing theCommandRouter andCommandBusConnector, consolidated in theJGroupsConnector.This connector provides the service discovery and message routing required to passCommandMessages from one application (instance) to another.

You should regard this extension as a partial replacement ofAxon Server as, compared to Axon Server, it only covers command routing.

Please read theJGroups section of the documentation for more information about this extension.

JobRunr Pro

TheJobRunr Pro Extension repository provides support for the "pro" edition ofJobRunr.

Users can benefit from this extension whenever they have:

  1. AcquiredJobRunr Pro, and
  2. want to use Axon'sdeadline management functionality.

We constructed this extension as some feature on theDeadlineManager API cannot be supported with the free edition of JobRunr.

Please read theJobrunr Pro section of the documentation for more information about this extension.

Kafka

TheKafka Extension repository enables integration withKafka.

Setting up a Kafka integration with your Axon Framework applications allows you to:

  1. Publish Axon Event Messages onto one or more Kafka topics, and
  2. to read Kafka Consumer Records converted to Axon Event Messages into your@EventHandler annotated methods.

In doing so, you would enable (micro)service communication through event streaming.Or, you can attach a (third-party) application with your Axon Framework application, communicating through Kafka.

Note that the Axon Framework teamdoes not intend to supportEvent Sourcing through the Kafka Extension.Although there are Kafka-focused articles explaining how to achieve this, we find this a suboptimal solution leading to predicaments in the future.We thus suggest you chooseAxon Server, an RDBMS solution or theMongoDB Extension to store your events and subsequently support event sourcing.

You should regard this extension as a partial replacement of Axon Server as, compared to Axon Server, it only covers event streaming.

Please read theKafka section of the documentation for more information about this extension.

Kotlin

TheKotlin Extension repository eases Axon Framework development forKotlin-based applications.

You can use this extension to relieve some of the "awkwardness" of the Axon Framework API when using Kotlin to build your application(s).It does so by providing reified methods of several of Axon's infrastructure components, like thecommand andquery gateway,upcasters, and thetest fixtures.

Please read theKotlin section of the documentation for more information about this extension.

MongoDB

TheMongoDB Extension repository enablesMongoDB as a storage solution throughout the framework.

Users can set this extension whenever they want to use MongoDB to store:

Especially when you store Query Models or inside a MongoDB collection, we recommend you keep the tracking tokens of thestreaming processor inside MongoDB as well.By doing so, you ascertain that the framework uses a single transaction to update the model and token.

The same logic applies to Sagas that are backed by streaming processors and stored in MongoDB; storing the tokens next to the saga instances makes the application more robust.

Note that although you can use this extension to adjust MongoDB into an event store, we do not necessarily recommend this.During the lifecycle of this extension, we have noticed predicaments with how MongoDB behaves, causing the event store to act suboptimal from a performance perspective.We thus recommend eitherAxon Server (the highest level of performance for event storage) or an RDBMS of choice instead.

You should regard this extension as a partial replacement of Axon Server as, compared to Axon Server, it only covers event storage.

Please read theMongoDB section of the documentation for more information about this extension.

Multitenancy

TheMultitenancy Extension repository provides integrated support formultitenancy to your Axon Framework application.

By adding this extension to yourAxon Framework application(s), you receive multi-tenant versions of all the infrastructure components the framework provides.In doing so, you can run a single instance of an application but serve many of your tenants in one go.Interfaces like theCommandBus,EventProcessor, andSequencedDeadLetterQueue are implemented by this extension to delegate tenant-specific tasks to concrete implementations of these components.

If you combine Axon Framework and the Multitenancy Extension withAxon Server, the multitenancy experience of your app(s) is seamless.The extension achieves this by utilizing Axon Server'smulti-context behavior to dynamically create new tenants (read: a context per tenant) whenever you register them.It is usable without Axon Server, but you will be inclined to implement factories for the infrastructure components yourself.

Please read theMultitenancy section of the documentation for more information about this extension.

Reactor

TheReactor Extension repository providesAxon Framework infrastructure components using theProject Reactor API.

You can add this extension to your Axon Framework project to use results likeMono andFlux on framework components.It provides Reactor versions of Axon's gateways, allowing you to leverage the reactive API on the edge of your Axon Framework application.

Please read theReactor section of the documentation for more information about this extension.

Spring AoT

TheSpring AoT Extension repository enables integration with the Spring Boot'sahead of time processing.

This extension allows you to compile to a native image whenever you combine Axon Framework with Spring Boot.

Please read theSpring AoT section of the documentation for more information about this extension.

Spring Cloud

TheSpring Cloud Extension repository enables integration withSpring Cloud.

You can use this extension to enable command routing in a distributed environment.As command routing differs from, for example, load balancing REST operation, it is highly recommended to use a distributed command routing solution whenever you have several applications and/or application instances that need to communicate with one another.

The extension achieves this by implementing theCommandRouter andCommandBusConnector, consolidated in theSpringCloudeCommandRouter andSpringHttpCommandBusConnector, respectively.This connector provides the service discovery and message routing required to passCommandMessages from one application (instance) to another.

Since the implementation uses the Spring Cloud discovery interfaces to perform the service discovery, you are able to choose a multitude of implementations to enable distributed command routing.You can, for example, use implementation likeNetflix,Consul,Zookeeper,Kubernetes, and many more.

You should regard this extension as a partial replacement ofAxon Server as, compared to Axon Server, it only covers command routing.

Please read theSpring Cloud section of the documentation for more information about this extension.

Tracing

TheTracing Extension repository enables integration withOpen Tracing.

When using this extension, you will replace theCommand- andQueryGateway with implementations that attach span information to yourMessages.Furthermore, when handling aMessage, a dedicatedMessageHandlerInterceptor ensures the span is populated on the overall trace.

Although this is valuable, it is essential to mention that the Open Tracing implementation has been archived in favor ofOpen Telemetry.Furthermore, as ofAxon Framework version4.6.0, the framework provides native support forOpen Telemetry.

We thus recommend that you use theintegrated tracing support whenever you are on Axon Framework version 4.6 or above.

Nonetheless, we still maintain and update the Tracing Extension for the time being.As such, you can be certain the extension still works as intended.

Please read theTracing section of the documentation for more information about this extension.



Bill of Materials

TheBill of Materials repository of Axon Framework is a dedicated dependency providing compatible versions of theframework andextensions.Hence, by addingaxon-bom to your dependency management system, you ensure the compatibility of Axon's dependencies.As such, we recommend you use this dependency whenever you combine Axon Framework with any of the extensions.

IntelliJ IDEA Plugin

TheAxon Framework IntelliJ Plugin is a plugin you can add when usingIntelliJ IDEA.Including this plugin eases your developer experience ofAxon Framework 4.x-based applications.

Some of the features this plugin adds to IntelliJ are:

  • Line markers to visualize messages
  • Axon Framework-specific code structure inspections
  • Easy access to the documentation

Please read theREADME of the IdeaPlugin project to learn more about this plugin.

Data Protection Module

As you may know,Event Sourcing dictates that you never remove or update events.With the introduction of Data Protection Laws likeGDPR, developers using Event Sourcing in their applications are thus faced with a predicament.A predicament you are required to resolve by law.

As one ofAxon Framework's pillars is to enable Event Sourcing, we are inclined to provide a solution.As such, AxonIQ constructed theData Protection Module in response to these new requirements.

The Data Protection Module is a Java library providing the tooling to mark specific data inside events as"personally identifiable information" (PII for short).Then when you store the event or send it over a network, you can encrypt the PII within the event to protect it.From there, you can choose a preferred key management system, with options like relation databases, hardware security modules, andHashiCorp Vault.

In combination with Axon Framework, you can implement the described behavior seamlessly by using dedicated annotations and a customSerializer as provided by the Data Protection Module.If you require more information about the Data Protection Module, be sure toreach out.

PinnedLoading

  1. AxonFrameworkAxonFrameworkPublic

    Framework for Evolutionary Message-Driven Microservices on the JVM

    Java 3.4k 798

Repositories

Loading
Type
Select type
Language
Select language
Sort
Select order
Showing 10 of 27 repositories
  • AxonFramework Public

    Framework for Evolutionary Message-Driven Microservices on the JVM

    AxonFramework/AxonFramework’s past year of commit activity
    Java 3,396Apache-2.0 798 162 15 UpdatedMar 17, 2025
  • extension-kotlin Public

    Axon Framework extension for Kotlin integration to ease development in Kotlin.

    AxonFramework/extension-kotlin’s past year of commit activity
    Kotlin 44Apache-2.0 9 4 1 UpdatedMar 17, 2025
  • extension-multitenancy Public

    Axon Framework extension providing handles to support multi tenancy with distinct buses and stores per tenant.

    AxonFramework/extension-multitenancy’s past year of commit activity
    Java 12Apache-2.0 2 4 0 UpdatedMar 16, 2025
  • extension-cosmosdb Public

    Axon Framework extension for Azure Cosmos DB integration.

    AxonFramework/extension-cosmosdb’s past year of commit activity
    Java0Apache-2.00 1 0 UpdatedMar 16, 2025
  • extension-spring-aot Public

    Axon Framework extension for Spring Ahead of Time compilation support.

    AxonFramework/extension-spring-aot’s past year of commit activity
    Java 5Apache-2.00 0 1 UpdatedMar 16, 2025
  • extension-reactor Public

    Axon Framework extension for integration with Project Reactor, allowing an extended reactive API.

    AxonFramework/extension-reactor’s past year of commit activity
    Java 28Apache-2.0 6 5 1 UpdatedMar 16, 2025
  • extension-tracing Public

    Axon Framework extension to provide tracing support for messages using the OpenTracing API.

    AxonFramework/extension-tracing’s past year of commit activity
    Java 14Apache-2.0 16 0 0 UpdatedMar 16, 2025
  • IdeaPlugin Public

    An IntelliJ IDEA plugin for Axon Framework

    AxonFramework/IdeaPlugin’s past year of commit activity
    Kotlin 34Apache-2.0 21 13 10 UpdatedMar 12, 2025
  • extension-jobrunrpro Public

    Extension to integrate with the Pro version of JobRunr. This makes it possible to search and delete jobs.

    AxonFramework/extension-jobrunrpro’s past year of commit activity
    Java 3Apache-2.00 0 0 UpdatedMar 10, 2025
  • extension-amqp Public

    Axon Framework extension for AMQP integration to publish and handle Event messages.

    AxonFramework/extension-amqp’s past year of commit activity
    Java 8Apache-2.0 9 0 0 UpdatedMar 9, 2025

Top languages

Loading…

Most used topics

Loading…


[8]ページ先頭

©2009-2025 Movatter.jp