JEnterprise Senior Java Workbench
Engineering Documentation

Entwurfsmuster in den Referenzprojekten

Jedes Muster wird im Code markiert und mit Zweck, Einsatzort und Begründung dokumentiert. Nutze die Seite für eine konkrete Engineering-Aufgabe: Kläre zuerst Ziel und Risiko und halte danach Ergebnis, Nachweis und nächsten Schritt fest.

Transactional Outbox

Zweck: Lokale Zustandsänderung und Event atomar speichern.

Einsatzort: PlaceOrderHandler, OutboxRepository, OutboxRelay

Begründung: Schließt die Dual-Write-Lücke zwischen Datenbank und Broker.

Idempotent Consumer

Zweck: Doppelte Nachrichtenzustellung ohne doppelte Wirkung verarbeiten.

Einsatzort: ProcessedMessageStore, OrderProjectionConsumer

Begründung: Macht At-least-once-Zustellung fachlich sicher.

Outbox Relay

Zweck: Outbox-Einträge getrennt und wiederholbar publizieren.

Einsatzort: OutboxRelay, MessagePublisher

Begründung: Entkoppelt Transportfehler vom Use Case.

Strategy

Zweck: Austauschbare fachliche Preisberechnung oder Serialisierung.

Einsatzort: PricingPolicy, EventSerializer

Begründung: Varianten bleiben testbar und unabhängig.

Repository

Zweck: Domänennaher Persistenzvertrag.

Einsatzort: OrderRepository, OutboxRepository

Begründung: Domäne und Application bleiben unabhängig von Infrastruktur.

Adapter

Zweck: Technische Implementierung eines Ports.

Einsatzort: InMemory-Repositories, Publisher und Serializer

Begründung: Technik kann ersetzt und separat geprüft werden.

Application Service

Zweck: Orchestrierung eines Use Cases.

Einsatzort: CreateOrderService, PlaceOrderHandler

Begründung: Regeln und Ablauf bleiben getrennt.

Domain Event

Zweck: Unveränderliche fachliche Aussage.

Einsatzort: OrderPlaced, OrderCancelled

Begründung: Nachgelagerte Reaktionen werden entkoppelt.

Composition Root

Zweck: Zentrale Verdrahtung konkreter Adapter.

Einsatzort: WorkbenchDemo, EventDrivenDemo

Begründung: Objektkonstruktion bleibt außerhalb der Fachmodule.

Spring Kafka Order Flow
Pattern Zweck Einsatzort Begründung
Transactional Outbox Dual Write vermeiden JdbcOutboxAdapter Geschäftsdaten und Event committen atomar.
Polling Publisher Outbox ausliefern OutboxRelay Brokerfehler bleiben außerhalb der Fachtransaktion.
Idempotent Consumer Duplikate neutralisieren OrderProjectionListener At-least-once erzeugt nur eine Fachwirkung.
Tolerant Reader V1/V2 lesen EventEnvelopeJsonCodec Additive Evolution bleibt kompatibel.
Retry + Dead Letter Fehler klassifizieren KafkaErrorHandlingConfiguration Temporäre und dauerhafte Fehler werden getrennt.
⌂ Cockpit