OTC Referenzimplementierung
Ein fokussiertes Spring-Boot-Modul mit echter Fachlogik statt Capability-Skeletons.
Fachlicher Ablauf
- Idempotente Bestellung anlegen.
- Zahlung autorisieren.
- Bestand reservieren.
- Bei Fehler Zahlung kompensieren und Bestellung stornieren.
- Bestellung bestätigen und Domain Events in die Outbox schreiben.
- Outbox Relay publiziert nach Kafka.
Technik
Java 21Spring Boot 3.5.16PostgreSQLFlywayKafkaActuatorPrometheusTestcontainers
Start
cd 07_IMPL_OTC_Order_to_Cash/mvn-ws-impl-otc/otc-reference-application
docker compose up -d postgres redpanda
mvn spring-boot:run
curl -X POST http://localhost:8080/api/v1/orders \
-H 'Content-Type: application/json' \
-H 'X-API-Key: change-me-local' \
-H 'Idempotency-Key: demo-001' \
-d '{"customerId":"C-100","lines":[{"productId":"SKU-1","quantity":2,"unitPrice":"19.90","currency":"EUR"}]}'Prüfung ohne Maven-Download
./scripts/check-core.shDer Check kompiliert und testet Aggregate, Value Objects, Statusübergänge und Domain Events nur mit JDK 21.
Design Patterns
Wichtige Dateien
| Datei | Zweck |
|---|---|
| pom.xml | Spring Boot, JPA, Kafka, Flyway, Testcontainers und SBOM |
| src/main/java/.../domain/Order.java | Aggregate Root mit Invarianten |
| CheckoutService.java | Saga-Orchestrierung und Kompensation |
| db/migration | Versionierte PostgreSQL-Migrationen |
| openapi/otc-api.yaml | HTTP-Vertrag |