Watermill: the missing standard library for event-driven applications
summary
Watermill is a Go library that claims to make event-driven services as simple as HTTP servers and now has ~8k GitHub stars and 100+ contributors. It supports about 12 pub/subs and supports Kafka, RabbitMQ, NATS, Redis, Postgres/MySQL and demonstrates switching from Kafka to Go Cloud live. The code uses generics to implement CQRS, an outbox component for transactional publish from Postgres/MySQL, and a reusable test suite for all pub/sub implementations that caught regressions and enabled confident swaps; a demo cuts handler plumbing roughly threefold.
AI-written summary · about
chapters (11)
- 0:00Introduction to Watermill
- 1:01The origins of Watermill
- 2:53Problems with event-driven systems
- 4:48Simplifying event-driven design
- 7:24Unix philosophy and architecture
- 10:28Core Watermill components
- 14:23Testing strategy for open source
- 17:45Designing stable public APIs
- 20:51Live coding demonstration
- 39:26Recent features and conclusion
- 40:38Q&A session
related talks
28mGopher in an Event-Driven playground
51mMicroservices in Go
05mGo for Real Time Streaming Architectures
54mComplex Concurrency Patterns with Go
28mManaging and Scaling Real Time Data Pipelines using Go
55mBuilding a Bank with Go
01h 02mBuilding Microservice Architectures with Go
23mImplementing Event-driven Systems with Go
