O que é o Watermill?

O Watermill é uma biblioteca Golang para processar eficientemente fluxos de mensagens. É projetado para construir aplicações orientadas a eventos e pode ser usado para origem de eventos, RPC baseado em mensagens, sagas e qualquer outro caso de uso que você possa imaginar. Você pode usar implementações tradicionais de publicação/assinatura como Kafka ou RabbitMQ, assim como HTTP ou binlog do MySQL, dependendo do seu caso de uso.

O Watermill fornece um conjunto de implementações de publicação/assinatura e pode ser facilmente estendido com sua própria implementação. Ele também vem com middlewares padrão, como painéis, filas, limitação de taxa, correlação, etc., que são usados por cada aplicação orientada a mensagens.

Por que usar o Watermill?

Com um número crescente de projetos adotando a arquitetura de microsserviços nos últimos anos, nem todos os cenários de negócios podem ser resolvidos usando chamadas de RPC síncronas. O tratamento assíncrono de tarefas se tornou um complemento valioso.

O objetivo do Watermill é se tornar a biblioteca de mensagens padrão para Go, ocultando toda essa complexidade por trás de uma API compreensível. Ele fornece tudo o que é necessário para construir aplicações baseadas em eventos ou outros padrões assíncronos. Após revisar os exemplos, você deverá ser capaz de integrar rapidamente o Watermill em seu projeto.