Открытый MQTT-брокер, поддерживающий MQTT 5.0, 3.1.1 и 3.1, а также клиентские библиотеки C/C++ и инструменты командной строки.
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
Установите модуль библиотеки Watermill
go get github.com/ThreeDotsLabs/watermill - 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 обновляется ежедневно.
Похожие проекты
Локальное desktop-приложение для управления RocketMQ, Kafka, RabbitMQ, Pulsar, Redis Stream, NATS и другими брокерами сообщений через единый интерфейс.
Платформа потоковой обработки данных на C++, совместимая с Kafka API и работающая без ZooKeeper и JVM.
Kubernetes-оператор для запуска и управления кластерами Apache Kafka в Kubernetes и OpenShift, включая Kafka Connect и Kafka Streams.
Открытая инфраструктура для биллинга по потреблению, кредитам или гибридной модели с учетом потребления в реальном времени; доступна в облаке и для самостоятельного развертывания.
Распределённая очередь задач для Python: выполняет фоновые задания и распределяет работу между воркерами через брокеры сообщений.