À propos du projet

Watermill est une bibliothèque Go conçue pour construire efficacement des applications événementielles. Elle abstrait la communication par flux de messages derrière une interface de gestionnaire simple, la rendant aussi facile à utiliser que les routeurs HTTP. La bibliothèque prend en charge l'event sourcing, le RPC sur messages, les sagas, le CQRS, et d'autres modèles événementiels. Les fonctionnalités clés incluent : - Une interface de gestionnaire simple : func(*Message) ([]*Message, error) - Un support universel pour l'architecture événementielle, la messagerie, le traitement de flux, et le CQRS - Un système flexible de middleware et de plugins - Une conception résiliente avec des technologies éprouvées et des tests de stress Les implémentations Pub/Sub prises en charge incluent : - 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 (Bêta) Watermill v1.0.0 est prêt pour la production avec une API publique stable. Toutes les implémentations Pub/Sub doivent réussir une suite de tests complète, y compris des tests de stress (exécutions parallèles 20x) et la détection de courses. La bibliothèque inclut des benchmarks comparant le débit de messages entre différentes implémentations Pub/Sub. Le projet fournit de nombreux exemples couvrant l'utilisation de base, l'intégration pub/sub, des scénarios réels (livraison exactement une fois, webhooks, synchronisation de bases de données, journaux d'événements persistants, événements transactionnels, événements envoyés par le serveur), et des projets complets. Un cours de formation pratique en ligne couvre des concepts standard de l'industrie comme la livraison au moins une fois, les modèles de lecture asynchrones, les événements et commandes, l'observabilité, l'ordre des messages, et les sagas.