Об этом проекте
Watermill — это библиотека на языке Go, предназначенная для эффективной разработки событийно-ориентированных приложений. Она абстрагирует коммуникацию через потоки сообщений за простым интерфейсом обработчика, что делает её использование таким же простым, как работа с HTTP-роутерами. Библиотека поддерживает event sourcing, RPC через сообщения, саги, CQRS и другие событийно-ориентированные паттерны.
Ключевые особенности включают:
- Простой интерфейс обработчика: func(*Message) ([]*Message, error)
- Универсальная поддержка событийно-ориентированной архитектуры, обмена сообщениями, потоковой обработки и CQRS
- Гибкая система промежуточного ПО и плагинов
- Устойчивый дизайн, основанный на проверенных технологиях и стресс-тестировании
Поддерживаемые реализации Pub/Sub включают:
- 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 (бета-версия)
Watermill v1.0.0 готов к производственному использованию и имеет стабильный публичный API. Все реализации Pub/Sub должны проходить комплексный набор тестов, включая стресс-тесты (20x параллельных запусков) и обнаружение гонок данных. Библиотека включает бенчмарки, сравнивающие пропускную способность сообщений в различных реализациях Pub/Sub.
Проект предоставляет обширные примеры, охватывающие базовое использование, интеграцию pub/sub, реальные сценарии (доставка ровно один раз, вебхуки, синхронизация баз данных, постоянные журналы событий, транзакционные события, события, отправляемые сервером), а также полные проекты. Онлайн-курс с практическими занятиями охватывает отраслевые стандарты, такие как доставка как минимум один раз, асинхронные модели чтения, события и команды, наблюдаемость, упорядочивание сообщений и саги.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.