Watermillとは?

Watermillは、メッセージストリームを効率よく処理するためのGolangライブラリです。イベント駆動型アプリケーションの構築に向けて設計されており、イベントソーシング、メッセージベースのRPC、サーガなど、さまざまなユースケースに利用できます。従来のKafkaやRabbitMQなどのパブリッシュ/サブスクライブ実装や、HTTPやMySQLのbinlogなど、ユースケースに応じて利用できます。

Watermillは一連のパブリッシュ/サブスクライブ実装を提供し、独自の実装で簡単に拡張できます。また、ダッシュボード、キュー、レート制限、相関などの標準ミドルウェアも提供されており、すべてのメッセージ駆動型アプリケーションで使用されます。

Watermillの利用理由

近年、マイクロサービスアーキテクチャを採用するプロジェクトが増えていますが、すべてのビジネスシナリオを同期的なRPC呼び出しで解決することができないことが増えています。非同期タスク処理は貴重な補完となっています。

Watermillの目標は、Goの標準メッセージングライブラリになることであり、この複雑さを理解しやすいAPIの背後に隠します。イベントやその他の非同期パターンに基づくアプリケーションを構築するために必要なすべてを提供します。例を確認した後には、Watermillを素早くプロジェクトに統合できるようになるはずです。