Cos'è Watermill?

Watermill è una libreria Golang per elaborare in modo efficiente flussi di messaggi. È progettata per la costruzione di applicazioni basate sugli eventi e può essere utilizzata per l'event sourcing, RPC basato su messaggi, sagas e qualsiasi altro caso d'uso che si possa immaginare. È possibile utilizzare implementazioni tradizionali di pubblicazione/sottoscrizione come Kafka o RabbitMQ, così come HTTP o il binlog di MySQL, a seconda del caso d'uso.

Watermill fornisce un insieme di implementazioni di pubblicazione/sottoscrizione e può essere facilmente estesa con la propria implementazione. Fornisce anche una serie di middleware standard come dashboard, code, limitazione della velocità, correlazione, ecc., che sono utilizzati da ogni applicazione basata sui messaggi.

Perché utilizzare Watermill?

Con un numero crescente di progetti che negli ultimi anni adottano l'architettura a microservizi, non tutti gli scenari aziendali possono essere risolti utilizzando chiamate RPC sincrone. La gestione delle attività asincrone è diventata un importante complemento.

L'obiettivo di Watermill è diventare la libreria di messaggistica standard per Go, nascondendo tutta questa complessità dietro un'API comprensibile. Fornisce tutto il necessario per costruire applicazioni basate su eventi o altri pattern asincroni. Dopo aver esaminato gli esempi, si dovrebbe essere in grado di integrare rapidamente Watermill nel proprio progetto.