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.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.