Czym jest Watermill?

Watermill to biblioteka Golang do efektywnego przetwarzania strumieni wiadomości. Została zaprojektowana do budowania aplikacji opartych na zdarzeniach i może być używana do event sourcing, RPC opartego na wiadomościach, sag, oraz innych przypadków użycia. Można używać tradycyjnych implementacji publikuj/subskrybuj, takich jak Kafka lub RabbitMQ, jak również HTTP lub dziennik binarny MySQL, w zależności od przypadku użycia.

Watermill dostarcza zestaw implementacji publikuj/ subskrybuj i może być łatwo rozszerzona o własne implementacje. Oferuje także standardowe middleware, takie jak panele, kolejki, ograniczenia szybkości, korelacja, itp., które są wykorzystywane przez każdą aplikację zasilaną przez wiadomości.

Dlaczego warto używać Watermill?

Wraz z coraz większą liczbą projektów przyjmujących architekturę mikrousług w ostatnich latach, nie wszystkie scenariusze biznesowe można rozwiązać przy użyciu synchronicznych wywołań RPC. Obsługa zadań asynchronicznych stała się cennym uzupełnieniem.

Celem Watermill jest stać się standardową biblioteką wiadomościową dla Go, chowając całą tę złożoność za zrozumiałym interfejsem API. Zapewnia wszystko, co jest potrzebne do budowania aplikacji opartych na zdarzeniach lub innych asynchronicznych wzorcach. Po przejrzeniu przykładów powinieneś być w stanie szybko zintegrować Watermill ze swoim projektem.