Etch – Distributed Notification Hub
A distributed notification hub using Apache Kafka to decouple high-volume business orders from notification delivery pipelines.
Etch separates order processing from notification delivery, so a slow or broken email provider never makes an order fail or makes a customer wait.
Key ideas
- The order service answers right away and publishes an event to Kafka
- A notification service sends the emails and texts in the background
- Failed sends retry with exponential backoff
- Sends that can never succeed go to a dead-letter topic instead of being lost
- Redis stops duplicate messages when Kafka redelivers an event
- Five services, each in its own container, set up to deploy to AWS ECS with GitHub Actions
Built with: Java, Spring Boot, Spring Cloud Gateway, Apache Kafka, MySQL, Redis, Testcontainers, Docker, GitHub Actions, AWS
Code: github.com/marlware/etch