Broker MQTT (servidor) de código aberto com suporte a MQTT 5.0, 3.1.1 e 3.1, além de bibliotecas cliente C/C++ e ferramentas de linha de comando.
ThreeDotsLabs/watermill
Uma biblioteca Go para criar aplicações orientadas a eventos, com uma interface unificada de Publisher/Subscriber para Kafka, RabbitMQ, NATS, SQL e outros.
- Estrelas
- 9,927
- Forks
- 515
- Issues abertas
- 86
- Último commit
- há 2 meses
O que é?
Watermill é uma biblioteca Go para trabalhar com fluxos de mensagens. Ela é voltada a aplicações orientadas a eventos e a padrões como event sourcing, CQRS, sagas e RPC por mensagens. Sua abstração principal é um handler que recebe uma mensagem e retorna novas mensagens ou um erro, enquanto o middleware decide o que acontece em seguida.
A biblioteca define interfaces comuns de Publisher e Subscriber, permitindo que o mesmo código da aplicação funcione em vários backends. Entre os Pub/Subs compatíveis estão Kafka, RabbitMQ (AMQP), NATS JetStream, Redis Streams, Google Cloud Pub/Sub, AWS SNS/SQS e bancos de dados SQL (MySQL e PostgreSQL), além de um GoChannel em memória para uso local. As implementações de Pub/Sub ficam em repositórios separados da organização ThreeDotsLabs.
O projeto está na versão v1.0.0 e informa que suas implementações de Pub/Sub são testadas com suítes compartilhadas, executadas com o detector de condições de corrida e em modo de estresse paralelo. Também publica uma tabela de benchmarks que compara o throughput dos backends em uma única configuração de teste.
Recursos principais
- 01Interfaces comuns de Publisher e Subscriber para vários brokers de mensagens
- 02Modelo baseado em handlers que retornam novas mensagens ou erros
- 03Middleware para compor comportamentos, como novas tentativas e fluxo de processamento
- 04Compatibilidade com Kafka, RabbitMQ, NATS JetStream, Redis Streams, Google Cloud Pub/Sub, AWS SNS/SQS e bancos de dados SQL
- 05GoChannel em memória para desenvolvimento e testes locais
Casos de uso
- Criar serviços orientados a eventos que trocam mensagens entre componentes
- Implementar event sourcing ou modelos de leitura CQRS em Go
- Coordenar fluxos de trabalho de longa duração com sagas
- Trocar de broker de mensagens sem reescrever a lógica da aplicação
Início rápido
- 1
Instale o módulo da biblioteca Watermill
go get github.com/ThreeDotsLabs/watermill - 2
Siga o guia Quickstart no site oficial para criar seu primeiro aplicativo
Antes de usar
- É uma biblioteca Go, portanto só é útil se você desenvolver aplicativos em Go.
- Cada backend de Pub/Sub, como Kafka ou RabbitMQ, fica em um módulo separado que você precisa adicionar por conta própria.
- Os números dos benchmarks são estimativas aproximadas e dependem muito da configuração.
Tópicos
Perguntas frequentes
- O que é watermill?
- Uma biblioteca Go para criar aplicações orientadas a eventos, com uma interface unificada de Publisher/Subscriber para Kafka, RabbitMQ, NATS, SQL e outros. Watermill é uma biblioteca Go para trabalhar com fluxos de mensagens. Ela é voltada a aplicações orientadas a eventos e a padrões como event sourcing, CQRS, sagas e RPC por mensagens. Sua abstração principal é um handler que recebe uma mensagem e retorna novas mensagens ou um erro, enquanto o middleware decide o que acontece em seguida.
- watermill é gratuito? Qual é a licença?
- watermill é open source sob a licença MIT. Confira os termos da licença antes de usá-lo em produtos comerciais.
- watermill ainda é mantido?
- Atualizado nos últimos 6 meses. O último commit de watermill foi em 25 de ago. de 2026.
- Para que posso usar watermill?
- Criar serviços orientados a eventos que trocam mensagens entre componentes Implementar event sourcing ou modelos de leitura CQRS em Go Coordenar fluxos de trabalho de longa duração com sagas Trocar de broker de mensagens sem reescrever a lógica da aplicação
- Como instalar watermill?
- Instale o módulo da biblioteca Watermill: go get github.com/ThreeDotsLabs/watermill Siga o guia Quickstart no site oficial para criar seu primeiro aplicativo
- Onde consigo watermill?
- O código-fonte e as instruções de instalação estão no GitHub: https://github.com/ThreeDotsLabs/watermill
Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.
Projetos relacionados
Cliente desktop local-first para gerenciar RocketMQ, Kafka, RabbitMQ, Pulsar, Redis Stream, NATS e outros brokers de mensagens em uma só interface.
Uma plataforma de streaming de dados compatível com a API do Kafka, escrita em C++ e que funciona sem ZooKeeper ou JVM.
Um operador Kubernetes que executa e gerencia clusters Apache Kafka no Kubernetes e no OpenShift, incluindo Kafka Connect e Kafka Streams.
Infraestrutura open source de billing por uso, créditos ou modelo híbrido, com medição em tempo real e opção de nuvem ou hospedagem própria.
Fila de tarefas distribuída para Python que executa tarefas em segundo plano e distribui o trabalho entre workers e brokers de mensagens.