Reference Guide

Axon Framework 2.0.9


Table of Contents

1. Introduction
1.1. Axon Framework Background
1.1.1. A brief history
1.1.2. What is Axon?
1.1.3. When to use Axon?
1.2. Getting started
1.2.1. Download Axon
1.2.2. Configure Maven
1.2.3. Infrastructure requirements
1.2.4. When you're stuck
1.3. Contributing to Axon Framework
1.4. Commercial Support
1.5. License information
2. Technical Overview
2.1. Architectural Overview
2.2. Axon Module Structure
2.2.1. Main modules
2.2.2. Incubator modules
2.3. Working with Axon API's
2.4. Spring Support
3. Command Handling
3.1. The Command Gateway
3.1.1. Configuring the Command Gateway
3.1.2. Creating a Custom Command Gateway
3.2. The Command Bus
3.2.1. Dispatching commands
3.2.2. SimpleCommandBus
3.2.3. DisruptorCommandBus
3.3. Command Handlers
3.3.1. Creating a Command Handler
3.3.2. Subscribing to a Command Bus
3.3.3. Annotation based handlers
3.4. Unit of Work
3.5. Command Interceptors
3.5.1. Command Dispatch Interceptors
3.5.1.1. Structural validation
3.5.2. Command Handler Interceptors
3.5.2.1. Auditing
3.6. Distributing the Command Bus
3.6.1. JGroupsConnector
4. Domain Modeling
4.1. Events
4.2. Aggregate
4.2.1. Basic aggregate implementations
4.2.2. Event sourced aggregates
4.2.3. Complex Aggregate structures
5. Repositories and Event Stores
5.1. Standard repositories
5.2. Event Sourcing repositories
5.3. Event store implementations
5.3.1. FileSystemEventStore
5.3.2. JpaEventStore
5.3.3. MongoDB Event Store
5.3.4. Implementing your own event store
5.3.5. Influencing the serialization process
5.4. Event Upcasting
5.4.1. Writing an upcaster
5.4.2. The Upcaster Chain
5.4.3. Content type conversion
5.5. Snapshotting
5.5.1. Creating a snapshot
5.5.2. Storing Snapshot Events
5.5.3. Initializing an Aggregate based on a Snapshot Event
5.5.4. Pruning Snapshot Events
5.6. Advanced conflict detection and resolution
6. Event Processing
6.1. Event Bus
6.1.1. Simple Event Bus
6.1.2. Clustering Event Bus
6.2. Event Listeners
6.2.1. Basic implementation
6.2.2. Annotated Event Handler
6.3. Asynchronous Event Processing
6.4. Distributing the Event Bus
6.4.1. Spring AMQP Terminal
6.5. Replaying Events on a Cluster
7. Managing complex business transactions
7.1. Saga
7.1.1. Life Cycle
7.1.2. Event Handling
7.1.3. Keeping track of Deadlines
7.1.4. Injecting Resources
7.2. Saga Infrastructure
7.2.1. Saga Manager
7.2.2. Saga Repository
7.2.3. Caching
8. Testing
8.1. Command Component Testing
8.2. Testing Annotated Sagas
9. Using Spring
9.1. Adding support for the Java Platform Common Annotations
9.2. Using the Axon namespace shortcut
9.3. Wiring event and command handlers
9.3.1. Event handlers
9.3.2. Command handlers
9.3.3. Annotation support using the axon namespace
9.4. Wiring the event bus
9.4.1. Configuration of Clusters
9.4.2. Replayable Clusters
9.4.3. Custom Cluster implementation
9.5. Wiring the command bus
9.6. Wiring the Repository
9.7. Wiring the Event Store
9.8. Configuring Snapshotting
9.9. Configuring Sagas
10. Performance Tuning
10.1. Database Indexes and Column Types
10.1.1. SQL Databases
10.1.2. MongoDB
10.2. Caching
10.3. Snapshotting
10.4. Aggregate performance
10.5. Event Serializer tuning
10.5.1. Preventing duplicate serialization
10.6. Custom Identifier generation