¿Qué es Watermill?
Watermill es una biblioteca de Golang para procesar eficientemente flujos de mensajes. Está diseñada para construir aplicaciones basadas en eventos y puede usarse para el origen de eventos, RPC basado en mensajes, sagas y cualquier otro caso de uso que se te ocurra. Puedes utilizar implementaciones tradicionales de publicación/suscripción como Kafka o RabbitMQ, así como HTTP o MySQL binlog, dependiendo de tu caso de uso.
Watermill proporciona un conjunto de implementaciones de publicación/suscripción y puede ampliarse fácilmente con tu propia implementación. También incluye middleware estándar como paneles de control, colas, límite de tasa, correlación, etc., que son utilizados por cada aplicación basada en mensajes.
¿Por qué usar Watermill?
Con un número creciente de proyectos que adoptan la arquitectura de microservicios en los últimos años, no todos los escenarios empresariales pueden resolverse utilizando llamadas RPC síncronas. El manejo de tareas asíncronas se ha convertido en un complemento valioso.
El objetivo de Watermill es convertirse en la biblioteca de mensajes estándar para Go, ocultando toda esta complejidad detrás de una API comprensible. Proporciona todo lo necesario para construir aplicaciones basadas en eventos u otros patrones asíncronos. Después de revisar los ejemplos, deberías poder integrar Watermill en tu proyecto rápidamente.