Sobre o projeto

Watermill é uma biblioteca Go projetada para construir aplicações orientadas a eventos de forma eficiente. Ela abstrai a comunicação por fluxos de mensagens por trás de uma interface de manipulador simples, tornando-a tão fácil de usar quanto roteadores HTTP. A biblioteca suporta event sourcing, RPC sobre mensagens, sagas, CQRS e outros padrões orientados a eventos. Os principais recursos incluem: - Uma interface de manipulador simples: func(*Message) ([]*Message, error) - Suporte universal para arquitetura orientada a eventos, mensageria, processamento de fluxos e CQRS - Sistema flexível de middlewares e plugins - Design resiliente com tecnologias comprovadas e testes de estresse As implementações Pub/Sub suportadas incluem: - 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 (Beta) Watermill v1.0.0 está pronto para produção com uma API pública estável. Todas as implementações Pub/Sub devem passar por uma suíte de testes abrangente, incluindo testes de estresse (execuções paralelas 20x) e detecção de condições de corrida. A biblioteca inclui benchmarks comparando a taxa de transferência de mensagens entre diferentes implementações Pub/Sub. O projeto fornece exemplos extensos cobrindo uso básico, integração pub/sub, cenários do mundo real (entrega exatamente uma vez, webhooks, sincronização de banco de dados, logs de eventos persistentes, eventos transacionais, eventos enviados pelo servidor) e projetos completos. Um curso online prático cobre conceitos padrão da indústria como entrega pelo menos uma vez, modelos de leitura assíncronos, eventos e comandos, observabilidade, ordenação de mensagens e sagas.