How natooa/order_management_microservices_system works
This repository is a multi-service order-management system. Its principal workflow begins with an order request, with product pricing and inventory reservation represented as distinct domain stages; order events then support payment processing and order confirmation or cancellation. Product catalog management, inventory administration and reservations, payment/refunds, and shipment-related event types are additional capabilities. Source excerpts confirm several entry points and the outbox publishing path, but do not show the full order, reservation, payment, or shipping wiring; uncertain links are omitted.
Main entry points: PaymentService.java Payment service · ProductService.java Product service · OrderPollerService.java Outbox poller · OrderController.java Order API
Components 30
Order lifecycle
- Order API
order-service/src/main/java/kz/natooa/order/OrderController.java - Order service
order-service/src/main/java/kz/natooa/order/OrdersService.java - Orders store
order-service/src/main/java/kz/natooa/order/OrdersRepository.java - Price calculation
order-service/src/main/java/kz/natooa/grpc/PricingService.java
Catalog and inventory
- Product gRPC client
order-service/src/main/java/kz/natooa/grpc/ProductGrpcClient.java - Product API
product-service/src/main/java/kz/natooa/product/ProductController.java - Product service
product-service/src/main/java/kz/natooa/product/ProductService.java - Product store
product-service/src/main/java/kz/natooa/product/ProductRepository.java - Product gRPC service
product-service/src/main/java/kz/natooa/product/ProductServiceGrpcImpl.java - Inventory API
inventory-service/src/main/java/kz/natooa/inventory/InventoryController.java - Inventory service
inventory-service/src/main/java/kz/natooa/inventory/InventoryService.java - Inventory store
inventory-service/src/main/java/kz/natooa/inventory/InventoryRepository.java - Reservation service
inventory-service/src/main/java/kz/natooa/reservations/InventoryReservationService.java - Reservation gRPC
inventory-service/src/main/java/kz/natooa/reservations/InventoryReservationServiceGrpcImpl.java - Reservation store
inventory-service/src/main/java/kz/natooa/reservations/InventoryReservationRepository.java
Payment processing
- Order event handler
payment-service/src/main/java/kz/natooa/events/OrderEventHandler.java - Event deduplication
payment-service/src/main/java/kz/natooa/events/DeduplicationService.java - Payment service
payment-service/src/main/java/kz/natooa/Payment/PaymentService.java - Provider factory
payment-service/src/main/java/kz/natooa/Payment/PaymentProviderFactory.java - Payment provider
payment-service/src/main/java/kz/natooa/Payment/PaymentProvider.java - Payment store
payment-service/src/main/java/kz/natooa/Payment/PaymentRepository.java - Refund store
payment-service/src/main/java/kz/natooa/Payment/PaymentRefundRepository.java - Processed messages
payment-service/src/main/java/kz/natooa/processed/ProcessedMessageRepository.java
Events and messaging
- Outbox poller
order-service/src/main/java/kz/natooa/outbox/OrderPollerService.java - Outbox store
order-service/src/main/java/kz/natooa/outbox/OutboxRepository.java - Payment event publisher
payment-service/src/main/java/kz/natooa/events/PaymentEventPublisher.java - Domain event types
common/src/main/java/kz/natooa/events/DomainEvent.java - Shipping service
shipping-service/src/main/java/kz/natooa/App.java
Other components
- Order client
- Kafka
Connections 18
- Order client → Order API: submits order
- Order API → Order service: creates order
- Price calculation → Product gRPC client: fetches product
- Product API → Product service: delegates requests
- Product service → Product store: accesses products
- Product gRPC service → Product service: serves product data
- Inventory API → Inventory service: delegates update
- Inventory service → Inventory store: accesses inventory
- Reservation gRPC → Reservation service: handles reservations
- Reservation service → Reservation store: accesses reservations
- Order event handler → Event deduplication: marks events
- Event deduplication → Processed messages: records event IDs
- Payment service → Provider factory: selects provider
- Provider factory → Payment provider: creates provider
- Payment service → Payment store: stores payments
- Payment service → Refund store: stores refunds
- Outbox poller → Outbox store: reads and updates
- Outbox poller → Kafka: publishes events