About this project
Watermill is a Go library designed for building event-driven applications efficiently. It abstracts message stream communication behind a simple handler interface, making it as easy to use as HTTP routers. The library supports event sourcing, RPC over messages, sagas, CQRS, and other event-driven patterns.
Key features include:
- A simple handler interface: func(*Message) ([]*Message, error)
- Universal support for event-driven architecture, messaging, stream processing, and CQRS
- Flexible middleware and plugin system
- Resilient design with proven technologies and stress testing
Supported Pub/Sub implementations include:
- AMQP (RabbitMQ)
- AWS SNS/SQS
- Bolt
- Firestore
- Google Cloud Pub/Sub
- HTTP
- io.Reader/io.Writer
- Kafka
- NATS Jetstream
- Redis Streams
- SQL (MySQL/PostgreSQL)
- SQLite (Beta)
Watermill v1.0.0 is production-ready with a stable public API. All Pub/Sub implementations must pass a comprehensive test suite, including stress tests (20x parallel runs) and race condition detection. The library includes benchmarks comparing message throughput across different Pub/Sub implementations.
The project provides extensive examples covering basic usage, pub/sub integration, real-world scenarios (exactly-once delivery, webhooks, database synchronization, persistent event logs, transactional events, server-sent events), and complete projects. An online hands-on training course covers industry-standard concepts like at-least-once delivery, asynchronous read models, events & commands, observability, message ordering, and sagas.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.