← Back to microservices patterns mapevents
🔔
Microservices Pattern
Event-Driven Communication
Services publish domain events when important business facts happen.
Detailed Description
Events describe facts that already happened. Subscribers decide what to do with those facts.
Use stable event contracts and versioning because events become shared integration APIs.
Visual Diagram
Domain Events
OrderService emits:
→ OrderPlaced { orderId, items, userId }
→ OrderCancelled { orderId, reason }
→ OrderShipped { orderId, trackingId }
Subscribers react:
EmailSvc listens → OrderPlaced
AnalyticsSvc listens → all events
InventorySvc listens → OrderPlaced, OrderCancelledTradeoffs
Pros
Very low coupling, easy to add subscribers
Cons
Harder to trace, duplicate events, eventual consistency
Examples: Kafka events, EventBridge, Node EventEmitter
Domain Events
OrderService emits:
-> OrderPlaced { orderId, items, userId }
-> OrderCancelled { orderId, reason }
-> OrderShipped { orderId, trackingId }
Subscribers react:
EmailSvc listens -> OrderPlaced
AnalyticsSvc listens -> all events
InventorySvc listens -> OrderPlaced, OrderCancelled