Repolode
ThreeDotsLabs

ThreeDotsLabs/watermill

Библиотека на Go для создания событийно-ориентированных приложений с единым интерфейсом Publisher/Subscriber для Kafka, RabbitMQ, NATS, SQL и других систем.

Звёзды
9,927
Форки
515
Открытые issues
86
Последний коммит
2 месяца назад

Что это?

Watermill — библиотека на Go для работы с потоками сообщений. Она предназначена для событийно-ориентированных приложений и таких паттернов, как event sourcing, CQRS, саги и RPC через сообщения. В основе библиотеки — обработчик, который получает сообщение и возвращает новые сообщения или ошибку, а middleware определяет, что произойдёт дальше.

В библиотеке определены общие интерфейсы Publisher и Subscriber, поэтому один и тот же код приложения может работать с разными бэкендами. Среди поддерживаемых Pub/Sub-систем — Kafka, RabbitMQ (AMQP), NATS JetStream, Redis Streams, Google Cloud Pub/Sub, AWS SNS/SQS и базы данных SQL (MySQL и PostgreSQL), а также GoChannel в памяти для локального использования. Реализации Pub/Sub находятся в отдельных репозиториях организации ThreeDotsLabs.

Проект выпущен в версии v1.0.0. В нём указано, что реализации Pub/Sub проверяются общими тестовыми наборами с включённым race detector и в параллельном стресс-режиме. Также публикуется таблица бенчмарков, сравнивающая пропускную способность бэкендов в рамках одного тестового окружения.

Ключевые возможности

  • 01Общие интерфейсы Publisher и Subscriber для множества брокеров сообщений
  • 02Модель на основе обработчиков, которые возвращают новые сообщения или ошибки
  • 03Middleware для настройки поведения, например повторных попыток и потока обработки
  • 04Поддержка Kafka, RabbitMQ, NATS JetStream, Redis Streams, Google Cloud Pub/Sub, AWS SNS/SQS и баз данных SQL
  • 05GoChannel в памяти для локальной разработки и тестирования

Сценарии использования

  • Создание событийно-ориентированных сервисов, компоненты которых обмениваются сообщениями
  • Реализация event sourcing или read-моделей CQRS на Go
  • Координация длительных процессов с помощью саг
  • Смена брокера сообщений без переписывания логики приложения

Быстрый старт

  1. 1

    Установите модуль библиотеки Watermill

    go get github.com/ThreeDotsLabs/watermill
  2. 2

    Следуйте руководству Quickstart на официальном сайте, чтобы создать своё первое приложение

Что важно знать

  • Это библиотека Go, поэтому она пригодится, только если вы разрабатываете приложения на Go.
  • Каждый бэкенд Pub/Sub, например Kafka или RabbitMQ, находится в отдельном модуле, который нужно добавить самостоятельно.
  • Показатели бенчмарков являются приблизительными и сильно зависят от конфигурации.

Темы

Частые вопросы

Что такое watermill?
Библиотека на Go для создания событийно-ориентированных приложений с единым интерфейсом Publisher/Subscriber для Kafka, RabbitMQ, NATS, SQL и других систем. Watermill — библиотека на Go для работы с потоками сообщений. Она предназначена для событийно-ориентированных приложений и таких паттернов, как event sourcing, CQRS, саги и RPC через сообщения. В основе библиотеки — обработчик, который получает сообщение и возвращает новые сообщения или ошибку, а middleware определяет, что произойдёт дальше.
watermill можно использовать бесплатно? Какая у него лицензия?
watermill распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
watermill всё ещё поддерживается?
Обновлялся за последние 6 месяцев. Последний коммит в watermill — 25 авг. 2026 г..
Для чего можно использовать watermill?
Создание событийно-ориентированных сервисов, компоненты которых обмениваются сообщениями Реализация event sourcing или read-моделей CQRS на Go Координация длительных процессов с помощью саг Смена брокера сообщений без переписывания логики приложения
Как установить watermill?
Установите модуль библиотеки Watermill: go get github.com/ThreeDotsLabs/watermill Следуйте руководству Quickstart на официальном сайте, чтобы создать своё первое приложение
Где скачать watermill?
Исходный код и инструкции по установке — на GitHub: https://github.com/ThreeDotsLabs/watermill

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Открытая инфраструктура для биллинга по потреблению, кредитам или гибридной модели с учетом потребления в реальном времени; доступна в облаке и для самостоятельного развертывания.

6,9 тыс.+2 за неделю960GoAGPL-3.0Обновлён 15 часов назад