How manogna-595/order-processing-service works
This is a reactive order-processing microservice whose principal workflow accepts an order through its API, runs the order saga across validation, payment, stock, and delivery stages, and completes or compensates the transaction. The README also describes event publication with an outbox, resilience patterns, and monitoring. The supplied source excerpt is a separate SonarQube fixer, so runtime call wiring is not directly verified; links below rely on README-level flow and documented capabilities, and omit uncertain internal calls.
Main entry points: SagaOrchestrator.java Saga orchestrator · OrderServiceAtLeastOnceImpl.java Order service · EventPublisher.java Event publisher · MetricsConfig.java Health and metrics
Components 18
Order API
- Order controller
order-service/src/main/java/com/example/order/controller/OrderController.java - Order service
order-service/src/main/java/com/example/order/service/OrderServiceAtLeastOnceImpl.java - Order validation
order-service/src/main/java/com/example/order/service
Order Saga
- Order state
order-service/src/main/java/com/example/order/domain/OrderStateMachine.java - Saga orchestrator
order-service/src/main/java/com/example/order/service/SagaOrchestrator.java - Payment stage
order-service/src/main/java/com/example/order/service/PaymentService.java - Stock stage
order-service/src/main/java/com/example/order/service/InventoryServiceImpl.java - Shipping and delivery
order-service/src/main/java/com/example/order/service - Compensation manager
order-service/src/main/java/com/example/order/service/CompensationManagerImpl.java
Events And Recovery
- Event publisher
order-service/src/main/java/com/example/order/service/EventPublisher.java - Order events
order-service/src/main/java/com/example/order/events/OrderEvent.java - Dead-letter handling
order-service/src/main/java/com/example/order/service/DLQManagerImpl.java
Persistence And Monitoring
- MySQL
- Order repository
order-service/src/main/java/com/example/order/repository/orders/OrderRepositoryImpl.java - Redis streams
- Event repository
order-service/src/main/java/com/example/order/repository/CompositeEventRepository.java - Health and metrics
order-service/src/main/java/com/example/order/config/MetricsConfig.java
Other components
- Order client
Connections 18
- Order client → Order controller: submits order
- Order controller → Order service: delegates request
- Order service → Order validation: validates order
- Order service → Saga orchestrator: starts saga
- Saga orchestrator → Order state: advances state
- Saga orchestrator → Payment stage: runs payment
- Saga orchestrator → Stock stage: checks stock
- Saga orchestrator → Shipping and delivery: runs delivery
- Saga orchestrator → Compensation manager: compensates failures
- Order service → Order repository: persists orders
- Order repository → MySQL: reads and writes
- Event publisher → Order events: publishes
- Event publisher → Redis streams: writes event stream
- Event publisher → Event repository: uses outbox
- Event repository → MySQL: persists events
- Dead-letter handling → Redis streams: handles failed events
- Health and metrics → MySQL: monitors service
- Health and metrics → Redis streams: checks health