| Value Object |
fachliche Werte immutable modellieren |
Money, OrderId |
verhindert primitive Obsession und Währungsfehler |
| Aggregate Root |
Invarianten schützen |
Order |
Order entscheidet über fachlichen Zustand |
| Repository |
Persistenzzugriff kapseln |
OrderRepository, OutboxRepository |
Application Service bleibt testbar |
| Application Service |
Use-Case- und Transaktionsgrenze sichtbar machen |
PlaceOrderService |
fachliche Operation schreibt Order + Outbox atomar |
| Port/Adapter |
Broker entkoppeln |
BrokerPort, FakeBroker |
Broker-Technik bleibt austauschbar |
| Transactional Outbox |
Dual Write vermeiden |
OutboxMessage, OutboxPublisher |
Event-Absicht wird mit fachlichem Zustand persistiert |
| Idempotent Consumer |
doppelte Zustellung entschärfen |
BillingConsumer, IdempotencyStore |
Consumer erzeugt Rechnung nur einmal |
| Test Fake |
Fehler kontrolliert simulieren |
FakeBroker |
Crash- und Retry-Fälle ohne Infrastruktur testbar |