Repolode
ThreeDotsLabs

ThreeDotsLabs/watermill

Kafka、RabbitMQ、NATS、SQLなどを共通のPublisher/Subscriberインターフェースで扱える、イベント駆動アプリケーション構築用のGoライブラリです。

スター
9,927
フォーク
515
未解決の Issue
86
最終コミット
2 か月前

これは何?

Watermillは、メッセージストリームを扱うためのGoライブラリです。イベント駆動アプリケーションを対象としており、イベントソーシング、CQRS、Saga、メッセージ経由のRPCといったパターンに対応します。中核となる抽象化は、メッセージを受け取り、新しいメッセージまたはエラーを返すハンドラーです。その後の処理はミドルウェアによって決まります。

ライブラリは共通のPublisherおよびSubscriberインターフェースを定義しているため、同じアプリケーションコードを複数のバックエンドで動かせます。対応するPub/Subには、Kafka、RabbitMQ(AMQP)、NATS JetStream、Redis Streams、Google Cloud Pub/Sub、AWS SNS/SQS、SQLデータベース(MySQLとPostgreSQL)があり、ローカル利用向けのインメモリGoChannelも用意されています。Pub/Subの実装は、ThreeDotsLabs組織内の個別リポジトリで提供されています。

プロジェクトはv1.0.0で、Pub/Sub実装は共通テストスイートを使い、race detectorを有効にした並列ストレステストで検証されていると説明されています。また、単一のテスト環境でバックエンドごとのスループットを比較したベンチマーク表も公開しています。

主な機能

  • 01多くのメッセージブローカーで共通のPublisherおよびSubscriberインターフェースを利用
  • 02ハンドラーが新しいメッセージまたはエラーを返すハンドラーベースのモデル
  • 03リトライや処理フローなどの動作を組み合わせるミドルウェア
  • 04Kafka、RabbitMQ、NATS JetStream、Redis Streams、Google Cloud Pub/Sub、AWS SNS/SQS、SQLデータベースに対応
  • 05ローカル開発やテスト向けのインメモリGoChannel

ユースケース

  • コンポーネント間でメッセージをやり取りするイベント駆動サービスの構築
  • GoでのイベントソーシングやCQRSの読み取りモデルの実装
  • Sagaによる長時間実行ワークフローの調整
  • アプリケーションロジックを書き換えずにメッセージブローカーを切り替え

クイックスタート

  1. 1

    Watermillライブラリモジュールをインストールする

    go get github.com/ThreeDotsLabs/watermill
  2. 2

    公式サイトのQuickstartガイドに従って、最初のアプリを作成する

使う前に知っておきたいこと

  • Goライブラリのため、Goでアプリケーションを開発する場合にのみ役立ちます。
  • KafkaやRabbitMQなどのPub/Subバックエンドはそれぞれ別のモジュールとして提供されており、自分で追加する必要があります。
  • ベンチマークの数値は概算であり、セットアップに大きく左右されます。

トピック

よくある質問

watermill とは?
Kafka、RabbitMQ、NATS、SQLなどを共通のPublisher/Subscriberインターフェースで扱える、イベント駆動アプリケーション構築用のGoライブラリです。 Watermillは、メッセージストリームを扱うためのGoライブラリです。イベント駆動アプリケーションを対象としており、イベントソーシング、CQRS、Saga、メッセージ経由のRPCといったパターンに対応します。中核となる抽象化は、メッセージを受け取り、新しいメッセージまたはエラーを返すハンドラーです。その後の処理はミドルウェアによって決まります。
watermill は無料で使えますか?ライセンスは?
watermill は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
watermill は今もメンテナンスされていますか?
半年以内に更新あり。watermill の最終コミットは 2026年8月25日 です。
watermill は何に使えますか?
コンポーネント間でメッセージをやり取りするイベント駆動サービスの構築 GoでのイベントソーシングやCQRSの読み取りモデルの実装 Sagaによる長時間実行ワークフローの調整 アプリケーションロジックを書き換えずにメッセージブローカーを切り替え
watermill のインストール方法は?
Watermillライブラリモジュールをインストールする: go get github.com/ThreeDotsLabs/watermill 公式サイトのQuickstartガイドに従って、最初のアプリを作成する
watermill はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/ThreeDotsLabs/watermill

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト