Broker MQTT (servidor) de código abierto compatible con MQTT 5.0, 3.1.1 y 3.1, con bibliotecas cliente de C/C++ y herramientas de línea de comandos.
ThreeDotsLabs/watermill
Una biblioteca de Go para crear aplicaciones basadas en eventos, con una interfaz unificada de Publisher/Subscriber para Kafka, RabbitMQ, NATS, SQL y más.
- Estrellas
- 9,927
- Forks
- 515
- Issues abiertos
- 86
- Último commit
- hace 2 meses
¿Qué es?
Watermill es una biblioteca de Go para trabajar con flujos de mensajes. Está orientada a aplicaciones basadas en eventos y a patrones como event sourcing, CQRS, sagas y RPC mediante mensajes. Su abstracción principal es un handler que recibe un mensaje y devuelve mensajes nuevos o un error; el middleware determina qué ocurre a continuación.
La biblioteca define interfaces comunes de Publisher y Subscriber, de modo que el mismo código de aplicación pueda ejecutarse con distintos backends. Entre las implementaciones de Pub/Sub compatibles se incluyen Kafka, RabbitMQ (AMQP), NATS JetStream, Redis Streams, Google Cloud Pub/Sub, AWS SNS/SQS y bases de datos SQL (MySQL y PostgreSQL), además de GoChannel en memoria para uso local. Las implementaciones de Pub/Sub se mantienen en repositorios separados dentro de la organización ThreeDotsLabs.
El proyecto está en la versión v1.0.0 y señala que sus implementaciones de Pub/Sub se prueban con suites compartidas, ejecutadas con el detector de carreras y en modo de pruebas de estrés en paralelo. También publica una tabla de benchmarks que compara el rendimiento de los distintos backends en una misma configuración de prueba.
Funciones clave
- 01Interfaces comunes de Publisher y Subscriber para numerosos brokers de mensajes
- 02Modelo basado en handlers que devuelven mensajes nuevos o errores
- 03Middleware para combinar comportamientos, como reintentos y flujos de procesamiento
- 04Compatible con Kafka, RabbitMQ, NATS JetStream, Redis Streams, Google Cloud Pub/Sub, AWS SNS/SQS y bases de datos SQL
- 05GoChannel en memoria para desarrollo y pruebas locales
Casos de uso
- Crear servicios basados en eventos que intercambian mensajes entre componentes
- Implementar event sourcing o modelos de lectura CQRS en Go
- Coordinar flujos de trabajo de larga duración con sagas
- Cambiar de broker de mensajes sin reescribir la lógica de la aplicación
Inicio rápido
- 1
Instala el módulo de la biblioteca Watermill
go get github.com/ThreeDotsLabs/watermill - 2
Sigue la guía Quickstart del sitio oficial para crear tu primera aplicación
Antes de usarlo
- Es una biblioteca de Go, así que solo resulta útil si desarrollas aplicaciones en Go.
- Cada backend de Pub/Sub, como Kafka o RabbitMQ, está en un módulo independiente que debes añadir por tu cuenta.
- Las cifras de los benchmarks son estimaciones aproximadas y dependen mucho de la configuración.
Temas
Preguntas frecuentes
- ¿Qué es watermill?
- Una biblioteca de Go para crear aplicaciones basadas en eventos, con una interfaz unificada de Publisher/Subscriber para Kafka, RabbitMQ, NATS, SQL y más. Watermill es una biblioteca de Go para trabajar con flujos de mensajes. Está orientada a aplicaciones basadas en eventos y a patrones como event sourcing, CQRS, sagas y RPC mediante mensajes. Su abstracción principal es un handler que recibe un mensaje y devuelve mensajes nuevos o un error; el middleware determina qué ocurre a continuación.
- ¿watermill es gratuito? ¿Qué licencia tiene?
- watermill es open source bajo la licencia MIT. Revisa los términos de la licencia antes de usarlo en productos comerciales.
- ¿watermill sigue mantenido?
- Actualizado en los últimos 6 meses. El último commit de watermill fue el 25 ago 2026.
- ¿Para qué puedo usar watermill?
- Crear servicios basados en eventos que intercambian mensajes entre componentes Implementar event sourcing o modelos de lectura CQRS en Go Coordinar flujos de trabajo de larga duración con sagas Cambiar de broker de mensajes sin reescribir la lógica de la aplicación
- ¿Cómo se instala watermill?
- Instala el módulo de la biblioteca Watermill: go get github.com/ThreeDotsLabs/watermill Sigue la guía Quickstart del sitio oficial para crear tu primera aplicación
- ¿Dónde consigo watermill?
- El código fuente y las instrucciones de instalación están en GitHub: https://github.com/ThreeDotsLabs/watermill
Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.
Proyectos relacionados
Cliente de escritorio local-first para administrar RocketMQ, Kafka, RabbitMQ, Pulsar, Redis Stream, NATS y otros brokers de mensajes desde una sola interfaz.
Plataforma de streaming de datos compatible con la API de Kafka, escrita en C++ y que funciona sin ZooKeeper ni la JVM.
Un operador de Kubernetes que ejecuta y gestiona clústeres de Apache Kafka en Kubernetes y OpenShift, incluidos Kafka Connect y Kafka Streams.
Infraestructura open source de facturación por uso, créditos o modelos híbridos, con medición en tiempo real y opción de nube o alojamiento propio.
Cola de tareas distribuida para Python que ejecuta trabajos en segundo plano y programa tareas entre workers y brokers de mensajes.