Working directory: Use dockers-compose to combine Axon Server with our 4 services (products, payments, orders and users) for 1 click starting enviroment.
Testing server: Deploy microservies to AWS without the need of AWS kubernetes
- Flowchart of successful order
- Flowchart of rollback after failed at payment microservice flowchart
3.1 Command Query Responsibility Segregation shows how microservices communicate with each other.
3.2 Event Sourcing
Part 1: Update to RDB
Part 2: Publish Event
Completed a lifecyle of event driven.
Aggregate product becomes first class citizen, every event ( create or update) will be tracked.
-
Controller:
a) Domain-CommandController (POST, PUT, DELETE)
e.g OrderCommandController, ProductCommandController
b) Domain-QueryController (GET)
e.g ProductQueryController
-
Command: Action-Domain-Command
e.g CreateOrderCommand, CreateProductCommand, UpdateProductCommand, ReserveProductCommand, DeleteProductCommand
-
Model: Domain-Model
e.g OrderRestModel, ProductRestModel
-
Aggregate: Domain-Aggregate
e.g ProductAggregate, OrderAggregate, PaymentAggregate, UserAggregate
-
Event: Domain-Action-Event
e.g OrderApproveEvent, OrderCreateEvent, OrderRejectEvent
-
Event handler: Domain-Events-Hander
e.g OrderEventsHandler, PaymentEventHandler, ProductEventHandler
-
Query : Action-Domain-Query
e.g FindOrderQuery, FindProductQuery, FindUserQuery
-
Query Handler: Domain-QueryHandler
e.g OrderQueryHandler, ProductQueryHandler
- Java 17+
- Axon Framework Spring boot
- Spring Cloud
- Lombok
- Postgresql, H2-DB
- Axon Server
Product service by Snapshot
- Snapshoot threhold = 4