Repolode
ThreeDotsLabs

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. 1

    Instala el módulo de la biblioteca Watermill

    go get github.com/ThreeDotsLabs/watermill
  2. 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