Watermill là gì?

Watermill là một thư viện Golang được thiết kế để xử lý luồng tin nhắn một cách hiệu quả. Nó được thiết kế để xây dựng các ứng dụng dựa trên sự kiện và có thể được sử dụng cho việc lưu trữ sự kiện, RPC dựa trên tin nhắn, sagas, và bất kỳ trường hợp sử dụng nào bạn có thể nghĩ đến. Bạn có thể sử dụng các triển khai truyền/nhận thông thường như Kafka hoặc RabbitMQ, cũng như HTTP hoặc MySQL binlog, tùy thuộc vào trường hợp sử dụng của bạn.

Watermill cung cấp một tập hợp các triển khai truyền/nhận và có thể dễ dàng mở rộng bằng cách triển khai của riêng bạn. Nó cũng đi kèm với các middleware tiêu chuẩn như bảng tin, hàng đợi, giới hạn tốc độ, tương quan, vv., được sử dụng bởi mọi ứng dụng dựa trên tin nhắn.

Tại sao sử dụng Watermill?

Với số lượng dự án áp dụng kiến trúc microservices ngày càng tăng trong những năm gần đây, không phải tất cả các kịch bản kinh doanh có thể được giải quyết bằng cách gọi RPC đồng bộ. Xử lý tác vụ bất đồng bộ đã trở thành một phần bổ sung có giá trị.

Mục tiêu của Watermill là trở thành thư viện nhắn tin tiêu chuẩn cho Go, che giấu tất cả sự phức tạp sau một API dễ hiểu. Nó cung cấp mọi thứ cần thiết để xây dựng ứng dụng dựa trên mô hình sự kiện hoặc các mô hình bất đồng bộ khác. Sau khi xem xét các ví dụ, bạn sẽ có khả năng tích hợp Watermill vào dự án của mình một cách nhanh chóng.