SlideShare a Scribd company logo
AXON FRAMEWORK
EXPLORING CQRS AND EVENT
SOURCING ARCHITECTURE
1. CQRS (Command and Query Responsibility Segregation).
2. Event Sourcing.
3. Axon Framework
4. SAGA
POINTS COVERED
What is CQRS?
Command and Query Responsibility Segregation, it is a software building pattern
that works on separating the part of an application that changes the state of an
application and the part that queries the state of the application.
Simple concept, which is, have the “write” part of an application distinctly separate from
the “read’ part of an application.
Remember...
CQRS is not seen as an “Architecture” but a “Pattern”. This open ups the component
based approach.
Layered arch. vs Component
based approach
In layered architecture the components are
arranged in layers, and can make direct calls
to the layers below it. Whereas in component
based approach components are semi-
autonomous and collaborate with each other
using messaging system.
CQRS components
What is Event Sourcing?
1. Changes made to state are tracked as events.
2. Events are stored in event store(any database).
3. Use stored events and summation of all these events always arrive at the current
state.
Note : - Event Sourcing is not part of CQRS.
What is Axon Framework?
By name it says is a framework that helps developers implement Command and Query
Responsibility Segregation pattern to build a scalable and extensible application. It does
so by providing implementation to the building blocks of the framework like EventBus,
CommandBus, EventStore, aggregate, repositories etc...
Overview of some DDD concepts
Domain Objects : Objects that model domain. Hold the state of the application.
Entity : Domain objects with an identity.
Aggregate : A logical grouping of domain objects to form an atomic and cohesive whole.
Aggregate Root : A grouping object that has been designed to be a container object.
Axon Framework Architecture
Axon components
Command
Represents that something should happen within a system. In axon it's a plain
object that represents the intent with necessary information required.
1. Plain POJO object.
2. Doesn't need to implement any interface or extend any class.
3. Should be immutable.
continuing...
Command Handler
Component that performs a task based on the command that it receives. Usually
command handlers are plain methods with @CommandHandler annotation. Performs
operations based on the intent captured in command it receives.
Command Handler can be created via two ways
1. Implementing CommandHandler interface.
2. If using axon with spring, use @CommandHandler on a method to be turned into a
command handler.
continuing...
Command Bus
Component that routes the commands to their respective command handlers.
Command handlers subscribe themselves to the command bus with
CommandHandlerInvoker class.
When using axon with spring, axon auto configuration subscribes all
command handlers with the bus automatically. Four different types of command bus
are provided by the axon namely SimpleCommandBus, DistributedCommandBus,
AsynchronousCommandBus and DisruptorcommandBus.
continuing...
Command Gateway
It is possible to use command bus directly to send out commands, but it's
usually recommended to use command gateway. Command gateway provides simpler
APIs to send out commands than Command Bus.
Axon provides DefaultCommandGateway as an implementation for the
CommandGateway.
continuing...
Event
Represents that something has happened within the application. In axon it’s
plain object with data representing the state change. Raised as a result of command
process.
1. Plain POJO object.
2. Must implement Serializable interface.
3. Should be immutable.
continuing...
1. Event Message
Any message wrapped in an EventMessage object. EventMessage object
contains timestamp attribute.
1. Domain Event
Event objects that are originated from aggregate. Wrapped in
DomainEventMessage(which extends EventMessage) object. The DomainEventMessage
additionally contains type and identifier of the aggregate that has raised an event.
continuing...
Event Handler
Performs an action on receiving the event of type defined as the first
parameter of the method. The method is annotated with @EventHandler annotation
that represent that method as event handler.
If you are using axon with spring, then axon will automatically register these
handlers with the Event Bus.
continuing...
Event Bus
Similar to the Command Bus Event Bus is a component that routes the events
to the event handlers. EventHandlerInvoker class is responsible for invoking handler
methods.
Axon provides SimpleEventBus as an implementation for Event Bus.
Aggregate
Domain objects annotated with @Aggregate annotation. Aggregate Root is
annotated with @AggregateRoot annotation.
1. Regular Aggregate Root
Aggregates state is stored in the persistent medium.
1. Event Sourcing Aggregate Root
Events resulted from the aggregate are stored to the persistence medium.
Repository
Repository provides mechanism to store and retrieve aggregate to and from the
persistence medium.
1. Standard Repository
Stores regular aggregates. Axon provides JPA backed repository for this
purpose.
1. Event Sourcing Repository
Stores events raised from aggregates. Axon provides
GenericEventSourcingRepository for this purpose.
Event Store (READ-ONLY and APPEND-ONLY)
It is a type of Event Bus that stores the events in the persistence medium.
Repositories need event store to store and load events from aggregates.
Axon provides out-of-the-box, the EmbeddedEventStore. It delegates the
actual storage and retrieval of events to the EventStorageEngine.
EventStore stores uses DomainEventEntry and SnapshotEventEntry domains
to store events in the persistence medium. These domains have properties like
aggregate type, identifier, payload, payload type, sequence number etc.
EventStorageEngine
EventStorageEngine stores events in it’s compatible data source. Axon
provides different StorageEngine implementations for different storage mediums.
1. JPAEventStorageEngine.
2. MongoEventStorageEngine.
3. JDBCEventStorageEngine.
4. SequenceEventStorageEngine.
5. InMemoryEventStorageEngine.
Snapshotting
Re-creating current state of the Aggregate object from stored events is a time-
consuming process when your application is in production, as your application is
loaded with thousands of events. Here event snapshotting comes to the rescue.
A snapshot event is a domain event that summarizes an arbitrary amount of event
into one. By regularly creating and storing of snapshot event, the event store does not
have to load all the events to re-create the current state of an Aggregate.
Snapshot Trigger
Snapshotting can be triggered by a number of factors like a number of events
stored in since the last snapshot, time-based etc..
The definition of when snapshot should be triggered is provided by
SnapShotTriggerDefinition interface.
EventCountSnapShotTriggerDefinition triggers snapshotting when a number of
events required to load an aggregate exceed a certain threshold.
SAGA
BASE Transaction?
Basic Availability Soft State Eventual Consistency
Basically Available — The system must ensure the availability of data. There
will be an answer for every request.
Soft State — The state of the system could change over time, so even during times
without input there may be changes going on due to ‘eventual consistency,’ thus the
state of the system is always ‘soft.’
Eventually consistent— The system will eventually become consistent once it stops
receiving input. The data will propagate to everywhere it should sooner or later, but the
system will continue to receive input and is not checking the consistency of every
transaction before it moves onto the next one.
SAGA?
➢In CQRS, Sagas are responsible for managing these BASE transactions.
They respond on Events produced by Commands and may produce new
commands, invoke external applications, etc. In the context of Domain
Driven Design, it is not uncommon for Sagas to be used as coordination
mechanism between several bounded contexts.
➢Saga has a starting point and an end, both triggered by Events.
Continuing...
Contrary to ACID, BASE transactions cannot be easily rolled back. To roll back,
compensating actions need to be taken to revert anything that has occurred
as part of the transaction.
Example
Examples
Find examples on CQRS and Event Sourcing implementations using Axon framework on
github.
Banking App - https://github.com/meta-magic/cqrs-axon-
example/tree/master/Bankingapp
Issue Traking App - https://github.com/meta-magic/cqrs-axon-
example/tree/master/IssueTrackingApp
Order Process App - https://github.com/meta-magic/cqrs-axon-
example/tree/master/ecommapp
END

More Related Content

What's hot (20)

PPTX
CQRS and Event Sourcing with Axon Framework
João Rafael Campos da Silva
 
PDF
Introduction to Axon FrameWork with CQRS pattern
Knoldus Inc.
 
PPTX
The Top 5 Apache Kafka Use Cases and Architectures in 2022
Kai Wähner
 
PPTX
Micro services Architecture
Araf Karsh Hamid
 
PDF
Real-Life Use Cases & Architectures for Event Streaming with Apache Kafka
Kai Wähner
 
PPTX
Event Driven Software Architecture Pattern
jeetendra mandal
 
PDF
When NOT to use Apache Kafka?
Kai Wähner
 
PDF
Apache Kafka Architecture & Fundamentals Explained
confluent
 
PDF
Introduction to Cassandra
Gokhan Atil
 
PDF
Apache Kafka® Use Cases for Financial Services
confluent
 
PPTX
Microsoft Azure Cost Optimization and improve efficiency
Kushan Lahiru Perera
 
PPTX
App Modernization with Microsoft Azure
Microsoft Tech Community
 
PDF
Fundamentals of Cloud Computing & AWS
Bhuvaneswari Subramani
 
PDF
Apache Kafka in the Airline, Aviation and Travel Industry
Kai Wähner
 
PDF
Kafka for Real-Time Replication between Edge and Hybrid Cloud
Kai Wähner
 
PPTX
Lift SSIS package to Azure Data Factory V2
Manjeet Singh
 
PDF
Pipelines and Packages: Introduction to Azure Data Factory (DATA:Scotland 2019)
Cathrine Wilhelmsen
 
PPTX
Migrating on premises workload to azure sql database
PARIKSHIT SAVJANI
 
PPTX
Azure Migrate
Mustafa
 
PPTX
Saga about distributed business transactions in microservices world
Mikalai Alimenkou
 
CQRS and Event Sourcing with Axon Framework
João Rafael Campos da Silva
 
Introduction to Axon FrameWork with CQRS pattern
Knoldus Inc.
 
The Top 5 Apache Kafka Use Cases and Architectures in 2022
Kai Wähner
 
Micro services Architecture
Araf Karsh Hamid
 
Real-Life Use Cases & Architectures for Event Streaming with Apache Kafka
Kai Wähner
 
Event Driven Software Architecture Pattern
jeetendra mandal
 
When NOT to use Apache Kafka?
Kai Wähner
 
Apache Kafka Architecture & Fundamentals Explained
confluent
 
Introduction to Cassandra
Gokhan Atil
 
Apache Kafka® Use Cases for Financial Services
confluent
 
Microsoft Azure Cost Optimization and improve efficiency
Kushan Lahiru Perera
 
App Modernization with Microsoft Azure
Microsoft Tech Community
 
Fundamentals of Cloud Computing & AWS
Bhuvaneswari Subramani
 
Apache Kafka in the Airline, Aviation and Travel Industry
Kai Wähner
 
Kafka for Real-Time Replication between Edge and Hybrid Cloud
Kai Wähner
 
Lift SSIS package to Azure Data Factory V2
Manjeet Singh
 
Pipelines and Packages: Introduction to Azure Data Factory (DATA:Scotland 2019)
Cathrine Wilhelmsen
 
Migrating on premises workload to azure sql database
PARIKSHIT SAVJANI
 
Azure Migrate
Mustafa
 
Saga about distributed business transactions in microservices world
Mikalai Alimenkou
 

Similar to Axon Framework, Exploring CQRS and Event Sourcing Architecture (20)

PDF
XebiCon'17 : AxonFramework @ SGCIB (our experience) : (CQRS, Eventsourcing, A...
Publicis Sapient Engineering
 
PPTX
Our way to microservices
Andi Pangeran
 
PDF
Introduction to Event Sourcing,CQRS and Axon
Petar Zrinščak
 
PPTX
Cqrs event sourcing slide landis+gyr
Atul Katiyar
 
PPTX
AxonIQCon22 - Beyond DDD 101 - Zambrovski-Galinski.pptx
Jan Galinski
 
PDF
AxonDB Product Release Presentation
Frans van Buul
 
PPTX
Real World Event Sourcing and CQRS
Matthew Hawkins
 
PDF
CQRS and EventSourcing with Spring & Axon
nklmish
 
PDF
Event Sourcing - what could possibly go wrong?
Andrzej Ludwikowski
 
PDF
Andrzej Ludwikowski - Event Sourcing - co może pójść nie tak?
SegFaultConf
 
ODP
Akka Persistence | Event Sourcing
Knoldus Inc.
 
PDF
CQRS and Event Sourcing in Action
Knoldus Inc.
 
PPTX
Event Driven Microservices Presentation.
Knoldus Inc.
 
PDF
Event-sourced architectures with Akka - Sander Mak
NLJUG
 
PDF
Event-sourced architectures with Akka
Sander Mak (@Sander_Mak)
 
PDF
Webinar - What's new in Axon 3
Allard Buijze
 
PDF
Andrzej Ludwikowski - Event Sourcing - what could possibly go wrong? - Codemo...
Codemotion
 
PPTX
An Introduction To CQRS
Neil Robbins
 
PDF
Cake Solutions: Cassandra as event sourced journal for big data analytics
DataStax Academy
 
PDF
Cassandra as an event sourced journal for big data analytics Cassandra Summit...
Martin Zapletal
 
XebiCon'17 : AxonFramework @ SGCIB (our experience) : (CQRS, Eventsourcing, A...
Publicis Sapient Engineering
 
Our way to microservices
Andi Pangeran
 
Introduction to Event Sourcing,CQRS and Axon
Petar Zrinščak
 
Cqrs event sourcing slide landis+gyr
Atul Katiyar
 
AxonIQCon22 - Beyond DDD 101 - Zambrovski-Galinski.pptx
Jan Galinski
 
AxonDB Product Release Presentation
Frans van Buul
 
Real World Event Sourcing and CQRS
Matthew Hawkins
 
CQRS and EventSourcing with Spring & Axon
nklmish
 
Event Sourcing - what could possibly go wrong?
Andrzej Ludwikowski
 
Andrzej Ludwikowski - Event Sourcing - co może pójść nie tak?
SegFaultConf
 
Akka Persistence | Event Sourcing
Knoldus Inc.
 
CQRS and Event Sourcing in Action
Knoldus Inc.
 
Event Driven Microservices Presentation.
Knoldus Inc.
 
Event-sourced architectures with Akka - Sander Mak
NLJUG
 
Event-sourced architectures with Akka
Sander Mak (@Sander_Mak)
 
Webinar - What's new in Axon 3
Allard Buijze
 
Andrzej Ludwikowski - Event Sourcing - what could possibly go wrong? - Codemo...
Codemotion
 
An Introduction To CQRS
Neil Robbins
 
Cake Solutions: Cassandra as event sourced journal for big data analytics
DataStax Academy
 
Cassandra as an event sourced journal for big data analytics Cassandra Summit...
Martin Zapletal
 
Ad

Recently uploaded (20)

PDF
Open Chain Q2 Steering Committee Meeting - 2025-06-25
Shane Coughlan
 
PPTX
Agentic Automation: Build & Deploy Your First UiPath Agent
klpathrudu
 
PDF
Linux Certificate of Completion - LabEx Certificate
VICTOR MAESTRE RAMIREZ
 
PDF
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
PDF
MiniTool Partition Wizard 12.8 Crack License Key LATEST
hashhshs786
 
PPTX
Home Care Tools: Benefits, features and more
Third Rock Techkno
 
PDF
Thread In Android-Mastering Concurrency for Responsive Apps.pdf
Nabin Dhakal
 
PDF
Download Canva Pro 2025 PC Crack Full Latest Version
bashirkhan333g
 
PDF
Unlock Efficiency with Insurance Policy Administration Systems
Insurance Tech Services
 
PPTX
AEM User Group: India Chapter Kickoff Meeting
jennaf3
 
PPTX
Hardware(Central Processing Unit ) CU and ALU
RizwanaKalsoom2
 
PDF
Top Agile Project Management Tools for Teams in 2025
Orangescrum
 
PDF
Why Businesses Are Switching to Open Source Alternatives to Crystal Reports.pdf
Varsha Nayak
 
PPTX
Homogeneity of Variance Test Options IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PDF
[Solution] Why Choose the VeryPDF DRM Protector Custom-Built Solution for You...
Lingwen1998
 
PDF
Alarm in Android-Scheduling Timed Tasks Using AlarmManager in Android.pdf
Nabin Dhakal
 
PPTX
OpenChain @ OSS NA - In From the Cold: Open Source as Part of Mainstream Soft...
Shane Coughlan
 
PDF
AI + DevOps = Smart Automation with devseccops.ai.pdf
Devseccops.ai
 
PDF
Automate Cybersecurity Tasks with Python
VICTOR MAESTRE RAMIREZ
 
PDF
IDM Crack with Internet Download Manager 6.42 Build 43 with Patch Latest 2025
bashirkhan333g
 
Open Chain Q2 Steering Committee Meeting - 2025-06-25
Shane Coughlan
 
Agentic Automation: Build & Deploy Your First UiPath Agent
klpathrudu
 
Linux Certificate of Completion - LabEx Certificate
VICTOR MAESTRE RAMIREZ
 
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
MiniTool Partition Wizard 12.8 Crack License Key LATEST
hashhshs786
 
Home Care Tools: Benefits, features and more
Third Rock Techkno
 
Thread In Android-Mastering Concurrency for Responsive Apps.pdf
Nabin Dhakal
 
Download Canva Pro 2025 PC Crack Full Latest Version
bashirkhan333g
 
Unlock Efficiency with Insurance Policy Administration Systems
Insurance Tech Services
 
AEM User Group: India Chapter Kickoff Meeting
jennaf3
 
Hardware(Central Processing Unit ) CU and ALU
RizwanaKalsoom2
 
Top Agile Project Management Tools for Teams in 2025
Orangescrum
 
Why Businesses Are Switching to Open Source Alternatives to Crystal Reports.pdf
Varsha Nayak
 
Homogeneity of Variance Test Options IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
[Solution] Why Choose the VeryPDF DRM Protector Custom-Built Solution for You...
Lingwen1998
 
Alarm in Android-Scheduling Timed Tasks Using AlarmManager in Android.pdf
Nabin Dhakal
 
OpenChain @ OSS NA - In From the Cold: Open Source as Part of Mainstream Soft...
Shane Coughlan
 
AI + DevOps = Smart Automation with devseccops.ai.pdf
Devseccops.ai
 
Automate Cybersecurity Tasks with Python
VICTOR MAESTRE RAMIREZ
 
IDM Crack with Internet Download Manager 6.42 Build 43 with Patch Latest 2025
bashirkhan333g
 
Ad

Axon Framework, Exploring CQRS and Event Sourcing Architecture

  • 1. AXON FRAMEWORK EXPLORING CQRS AND EVENT SOURCING ARCHITECTURE
  • 2. 1. CQRS (Command and Query Responsibility Segregation). 2. Event Sourcing. 3. Axon Framework 4. SAGA POINTS COVERED
  • 3. What is CQRS? Command and Query Responsibility Segregation, it is a software building pattern that works on separating the part of an application that changes the state of an application and the part that queries the state of the application. Simple concept, which is, have the “write” part of an application distinctly separate from the “read’ part of an application. Remember... CQRS is not seen as an “Architecture” but a “Pattern”. This open ups the component based approach.
  • 4. Layered arch. vs Component based approach In layered architecture the components are arranged in layers, and can make direct calls to the layers below it. Whereas in component based approach components are semi- autonomous and collaborate with each other using messaging system.
  • 6. What is Event Sourcing? 1. Changes made to state are tracked as events. 2. Events are stored in event store(any database). 3. Use stored events and summation of all these events always arrive at the current state. Note : - Event Sourcing is not part of CQRS.
  • 7. What is Axon Framework? By name it says is a framework that helps developers implement Command and Query Responsibility Segregation pattern to build a scalable and extensible application. It does so by providing implementation to the building blocks of the framework like EventBus, CommandBus, EventStore, aggregate, repositories etc...
  • 8. Overview of some DDD concepts Domain Objects : Objects that model domain. Hold the state of the application. Entity : Domain objects with an identity. Aggregate : A logical grouping of domain objects to form an atomic and cohesive whole. Aggregate Root : A grouping object that has been designed to be a container object.
  • 10. Axon components Command Represents that something should happen within a system. In axon it's a plain object that represents the intent with necessary information required. 1. Plain POJO object. 2. Doesn't need to implement any interface or extend any class. 3. Should be immutable.
  • 11. continuing... Command Handler Component that performs a task based on the command that it receives. Usually command handlers are plain methods with @CommandHandler annotation. Performs operations based on the intent captured in command it receives. Command Handler can be created via two ways 1. Implementing CommandHandler interface. 2. If using axon with spring, use @CommandHandler on a method to be turned into a command handler.
  • 12. continuing... Command Bus Component that routes the commands to their respective command handlers. Command handlers subscribe themselves to the command bus with CommandHandlerInvoker class. When using axon with spring, axon auto configuration subscribes all command handlers with the bus automatically. Four different types of command bus are provided by the axon namely SimpleCommandBus, DistributedCommandBus, AsynchronousCommandBus and DisruptorcommandBus.
  • 13. continuing... Command Gateway It is possible to use command bus directly to send out commands, but it's usually recommended to use command gateway. Command gateway provides simpler APIs to send out commands than Command Bus. Axon provides DefaultCommandGateway as an implementation for the CommandGateway.
  • 14. continuing... Event Represents that something has happened within the application. In axon it’s plain object with data representing the state change. Raised as a result of command process. 1. Plain POJO object. 2. Must implement Serializable interface. 3. Should be immutable.
  • 15. continuing... 1. Event Message Any message wrapped in an EventMessage object. EventMessage object contains timestamp attribute. 1. Domain Event Event objects that are originated from aggregate. Wrapped in DomainEventMessage(which extends EventMessage) object. The DomainEventMessage additionally contains type and identifier of the aggregate that has raised an event.
  • 16. continuing... Event Handler Performs an action on receiving the event of type defined as the first parameter of the method. The method is annotated with @EventHandler annotation that represent that method as event handler. If you are using axon with spring, then axon will automatically register these handlers with the Event Bus.
  • 17. continuing... Event Bus Similar to the Command Bus Event Bus is a component that routes the events to the event handlers. EventHandlerInvoker class is responsible for invoking handler methods. Axon provides SimpleEventBus as an implementation for Event Bus.
  • 18. Aggregate Domain objects annotated with @Aggregate annotation. Aggregate Root is annotated with @AggregateRoot annotation. 1. Regular Aggregate Root Aggregates state is stored in the persistent medium. 1. Event Sourcing Aggregate Root Events resulted from the aggregate are stored to the persistence medium.
  • 19. Repository Repository provides mechanism to store and retrieve aggregate to and from the persistence medium. 1. Standard Repository Stores regular aggregates. Axon provides JPA backed repository for this purpose. 1. Event Sourcing Repository Stores events raised from aggregates. Axon provides GenericEventSourcingRepository for this purpose.
  • 20. Event Store (READ-ONLY and APPEND-ONLY) It is a type of Event Bus that stores the events in the persistence medium. Repositories need event store to store and load events from aggregates. Axon provides out-of-the-box, the EmbeddedEventStore. It delegates the actual storage and retrieval of events to the EventStorageEngine. EventStore stores uses DomainEventEntry and SnapshotEventEntry domains to store events in the persistence medium. These domains have properties like aggregate type, identifier, payload, payload type, sequence number etc.
  • 21. EventStorageEngine EventStorageEngine stores events in it’s compatible data source. Axon provides different StorageEngine implementations for different storage mediums. 1. JPAEventStorageEngine. 2. MongoEventStorageEngine. 3. JDBCEventStorageEngine. 4. SequenceEventStorageEngine. 5. InMemoryEventStorageEngine.
  • 22. Snapshotting Re-creating current state of the Aggregate object from stored events is a time- consuming process when your application is in production, as your application is loaded with thousands of events. Here event snapshotting comes to the rescue. A snapshot event is a domain event that summarizes an arbitrary amount of event into one. By regularly creating and storing of snapshot event, the event store does not have to load all the events to re-create the current state of an Aggregate.
  • 23. Snapshot Trigger Snapshotting can be triggered by a number of factors like a number of events stored in since the last snapshot, time-based etc.. The definition of when snapshot should be triggered is provided by SnapShotTriggerDefinition interface. EventCountSnapShotTriggerDefinition triggers snapshotting when a number of events required to load an aggregate exceed a certain threshold.
  • 24. SAGA
  • 25. BASE Transaction? Basic Availability Soft State Eventual Consistency Basically Available — The system must ensure the availability of data. There will be an answer for every request. Soft State — The state of the system could change over time, so even during times without input there may be changes going on due to ‘eventual consistency,’ thus the state of the system is always ‘soft.’ Eventually consistent— The system will eventually become consistent once it stops receiving input. The data will propagate to everywhere it should sooner or later, but the system will continue to receive input and is not checking the consistency of every transaction before it moves onto the next one.
  • 26. SAGA? ➢In CQRS, Sagas are responsible for managing these BASE transactions. They respond on Events produced by Commands and may produce new commands, invoke external applications, etc. In the context of Domain Driven Design, it is not uncommon for Sagas to be used as coordination mechanism between several bounded contexts. ➢Saga has a starting point and an end, both triggered by Events.
  • 27. Continuing... Contrary to ACID, BASE transactions cannot be easily rolled back. To roll back, compensating actions need to be taken to revert anything that has occurred as part of the transaction.
  • 29. Examples Find examples on CQRS and Event Sourcing implementations using Axon framework on github. Banking App - https://github.com/meta-magic/cqrs-axon- example/tree/master/Bankingapp Issue Traking App - https://github.com/meta-magic/cqrs-axon- example/tree/master/IssueTrackingApp Order Process App - https://github.com/meta-magic/cqrs-axon- example/tree/master/ecommapp
  • 30. END

Editor's Notes

  • #4: The part that changes the state of the application(changes to the domain model)