Go library for building event-driven applications.

Easy to use

Our goal was to create a tool which is easy to understand, even by junior developers.


It doesn't matter if you want to do Event-driven architecture, CQRS, Event Sourcing or just stream MySQL Binlog to Kafka.


Watermill was designed to process hundreds of thousands of messages per second.


Every component is built in a way that allows you to configure it for your needs. You can also implement your own middlewares for the router.


Watermill is using proven technologies and has a strong unit and integration tests coverage for the critical areas.

You can find a detailed explanation of why we've built Watermill in our Introducing Watermill blog post.