How java-techie-jt/kafka-idempotency works
This repository demonstrates a Kafka-based order-to-payment workflow with idempotent payment persistence. A client submits an order; the order service assigns a request ID and publishes the event; the payment service consumes it, records a payment, and acknowledges the message. A unique request-ID constraint supports duplicate detection. The README is only a title, so this map relies on the sampled source; database-backed order saving and a real payment-gateway call are comments, not implemented behavior.
Main entry points: OrderConsumer.java Order consumer · OrderController.java Order controller · OrderService.java Order service · PaymentService.java Payment service
Components 12
Order service
- Order controller
order-service/src/main/java/com/javatechie/controller/OrderController.java - Order service
order-service/src/main/java/com/javatechie/service/OrderService.java - Order data
order-service/src/main/java/com/javatechie/dto/OrderDto.java
Kafka messaging
- Topic configuration
order-service/src/main/java/com/javatechie/config/KafkaConfig.java - Kafka topic
Payment service
- Order consumer
payment-service/src/main/java/com/javatechie/listener/OrderConsumer.java - Payment service
payment-service/src/main/java/com/javatechie/service/PaymentService.java - Order data
payment-service/src/main/java/com/javatechie/dto/OrderDto.java - Payment repository
payment-service/src/main/java/com/javatechie/respository/PaymentRepository.java - Payment record
payment-service/src/main/java/com/javatechie/entity/Payment.java - Payment database
Other components
- Order client
Connections 10
- Order client → Order controller: submits order
- Order controller → Order service: places order
- Order service → Kafka topic: publishes event
- Topic configuration → Kafka topic: declares topic
- Kafka topic → Order consumer: delivers event
- Order consumer → Payment service: processes payment
- Payment service → Payment repository: saves payment
- Payment repository → Payment database: writes record
- Payment record → Payment database: defines unique key
- Order consumer → Kafka topic: acknowledges message