Об этом проекте

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, реальные сценарии (доставка ровно один раз, вебхуки, синхронизация баз данных, постоянные журналы событий, транзакционные события, события, отправляемые сервером), а также полные проекты. Онлайн-курс с практическими занятиями охватывает отраслевые стандарты, такие как доставка как минимум один раз, асинхронные модели чтения, события и команды, наблюдаемость, упорядочивание сообщений и саги.