Apa itu Watermill?

Watermill adalah sebuah perpustakaan Golang untuk memproses aliran pesan secara efisien. Perpustakaan ini dirancang untuk membangun aplikasi berbasis peristiwa dan dapat digunakan untuk sumber peristiwa, RPC berbasis pesan, saga, dan berbagai kasus penggunaan lainnya. Anda dapat menggunakan implementasi tradisional untuk penerbit/langganan seperti Kafka atau RabbitMQ, serta HTTP atau MySQL binlog, tergantung pada kasus penggunaan Anda.

Watermill menyediakan kumpulan implementasi penerbit/langganan dan dapat dengan mudah diperluas dengan implementasi Anda sendiri. Perpustakaan ini juga dilengkapi dengan middleware standar seperti dashboard, antrian, pembatasan kecepatan, korelasi, dll., yang digunakan oleh setiap aplikasi yang didorong oleh pesan.

Mengapa menggunakan Watermill?

Dengan semakin banyaknya proyek yang mengadopsi arsitektur mikro layanan dalam beberapa tahun terakhir, tidak semua skenario bisnis dapat diselesaikan menggunakan panggilan RPC sinkron. Penanganan tugas asinkron telah menjadi suatu tambahan yang berharga.

Tujuan dari Watermill adalah untuk menjadi perpustakaan pengiriman pesan standar untuk Go, dengan menyembunyikan semua kompleksitas di balik API yang dapat dimengerti. Perpustakaan ini menyediakan segala yang dibutuhkan untuk membangun aplikasi berdasarkan pola peristiwa atau asinkron yang lainnya. Setelah Anda meninjau contoh-contoh, Anda seharusnya dapat mengintegrasikan Watermill ke dalam proyek Anda dengan cepat.