Что такое Watermill?

Watermill - это библиотека на языке Golang, предназначенная для эффективной обработки потоков сообщений. Она разработана для создания событийно-ориентированных приложений и может использоваться для событийного хранения, основанного на сообщениях RPC, саг и любых других случаев использования, которые вы можете представить. Вы можете использовать традиционные реализации публикаций/подписок, такие как Kafka или RabbitMQ, а также HTTP или MySQL binlog, в зависимости от вашего случая использования.

Watermill предоставляет набор реализаций публикации/подписки и легко расширяется с помощью вашей собственной реализации. Он также поставляется со стандартным промежуточным программным обеспечением, таким как панели мониторинга, очереди, контроль скорости, корреляция и т. д., которые используются каждым приложением, основанным на сообщениях.

Зачем использовать Watermill?

С ростом числа проектов, принимающих архитектуру микросервисов в последние годы, не все бизнес-сценарии могут быть решены синхронными вызовами RPC. Асинхронная обработка задач стала ценным дополнением.

Цель Watermill - стать стандартной библиотекой сообщений для Go, скрывая всю эту сложность за понятным API. Он предоставляет все необходимое для создания приложений на основе событийных или других асинхронных шаблонов. После ознакомления с примерами вы сможете быстро интегрировать Watermill в свой проект.