Dieses System kombiniert NestJS-Microservices in TypeScript mit gRPC/Protocol Buffers, RabbitMQ und Docker Compose, arbeitet aber ohne persistente Datenbank und ohne ORM-Entities – stattdessen nutzt jeder Service In-Memory-Stores für schnelle und schlanke Demos.
Für asynchrone Events nutzen wir RabbitMQ-Queues order.created und order.status sowie einen Fanout-Exchange logs, der Kopien jeder Nachricht an den Logging-Service ausliefert
Die gesamte Umgebung wird über ein einziges docker-compose.yml orchestriert, das RabbitMQ und alle vier Container startet
- NestJS & Node.js
- Für Microservices
- TypeScript
- Einfache und typsichere Entwicklung
- gRPC & Protocol Buffers
- gRPC ist ein leistungsfähiges RPC-Framework von Google, das HTTP/2 für den Transport und Protocol Buffers als Interface Definition Language und Serialisierungsformat verwendet
- Die gemeinsame Datei
order.protodefiniert die NachrichtenOrderRequestundOrderReplysowie den ServiceERPService, aus denen automatisch TypeScript-Client- und Server-Stubs generiert werden
- RabbitMQ & amqplib
- RabbitMQ als Message-Broker für asynchrone Events
- Ein Fanout-Exchange broadcastet Nachrichten an alle gebundenen Queues
- Docker & Docker Compose
- Docker-Container isolieren jeden Service mit exakt definiertem Image, Abhängigkeiten und Laufzeitumgebung.
- Docker Compose orchestriert RabbitMQ und alle vier Microservices in einem einzigen
docker-compose.yml-File, das Startreihenfolge und Konfigurationen beschreibt. Dadurch startet die gesamte Anwendung mit einem einzigen Befehl (docker-compose up -d) - reproduzierbar auf jedem System
- Bestellung aufgeben (REST)
- Client →
POST /orders→ E-Commerce-Service validiert, speichert in Map und publiziertorder.createdvia RabbitMQ
- Client →
- CRM-Aktualisierung (Event-Driven)
- CRM-Service konsumiert
order.created, aktualisiert Kunden-Bestellhistorie und ackt die Nachricht
- CRM-Service konsumiert
- Lieferdatum per gRPC
- E-Commerce-Service ruft synchron
ProcessOrderam ERP-Service auf (gRPC über Protobuf), erhältdeliveryDateundstatuszurück
- E-Commerce-Service ruft synchron
- Asynchrone Status‐Updates
- ERP-Service sendet
order.statusvia RabbitMQ an E-Commerce-Service, der den internen Status in seiner Map aktualisiert
- ERP-Service sendet
- Zentrales Logging (Fanout)
- Jeder Service publiziert seine Events an den Fanout-Exchange
- Logging-Service empfängt alle Events und schreibt sie zeilenweise in
.log
- Tools herunterladen
- Docker Desktop (latest)
- Postman (latest)
- node (latest)
- Repo Klonen
npm installin jedem service ordner ausführendocker-compose up --build -dim root ausführen