このプロジェクトについて

go-kafkaは、github.com/faustbrian/go-kafkaに公開されたMITライセンスのGoモジュールです。これは、Goサービス向けに、バインドされた明示的なApache KafkaのProducer、Consumer、Replay、検査、およびトランザクショナルな構成要素を提供し、franz-goのラッパーとして実装されています。設計意図としては、配信結果、ライフサイクルの所有権、トピックポリシーやセキュリティ設定を呼び出しアプリケーションから隠すことを避けていることが挙げられます。 READMEでは、範囲と制限について明確に述べられています。このパッケージは、少なくとも一度の配信を提供しますが、データベース書き込みとKafkaの公開を原子的に保証せず、Consumer側の副作用を正確に一度だけ実行しません。また、トピックやブローカーの設定は管理しません。アプリケーションは、曖昧な公開とコミット結果の調整責任を負い、その結果をライブラリが区別可能に保持します。 インストールは単一のモジュール取得であり、go get github.com/faustbrian/go-kafkaで可能です。ドキュメント化されたクイックスタートでは、ProducerConfigがクライアントの割り当てやブローカーへの接続なしに起動時に検証されます。サンプルでは、ブローカーリスト、クライアント識別子、許可されたトピックリストを設定し、Validateを呼び出してからNewProducerでProducerを構築し、Closeを遅延させます。配信はコンテキストとトピック、キー、値のバイトを含むメッセージを受け取ります。READMEによると、トピックアクセスはコンストラクタでコピーされた許可リストを通じて制限されており、Producerは事前に承認されたトピックのみにアクセスできます。 保証セクションには複数の具体的な動作が記載されています。Producerはfranz-goのイデムポテンスを保持し、すべての同期レプリカからの確認を要求し、リトライ、バッファリング、入場、配信を制限します。Consumerは明示的な確認、リトライ、デッドレターリスト、再バランス、シャットダウンの動作を公開します。TLS 1.2以降がデフォルトですが、認証とブローカー互換性は明示的な展開決定として扱われます。サービス統合、OpenTelemetry、Amazon MSK IAM用のオプションモジュールがリストアップされており、それぞれ呼び出し側が管理するライフサイクルを持ち、ライブラリによる管理は行われません。 ドキュメントはdocsディレクトリに整理されており、インデックス、互換性マトリクス、仕様決定レジスタ、配信保証文書、運用ガイド、そして完全なProducer、Consumer、Replay、Inspection、およびライフサイクル契約を網羅する詳細リファレンスが含まれています。READMEでは、バージョン付きGolibエコシステムインデックスとその統合・データ移動ファミリーへのリンクも示されており、このパッケージを補完ライブラリやオプションアダプターと比較するためのものです。 開発およびリリース作業については、READMEでは影響を受けるモジュールディレクトリに対してgolib checkを実行し、リポジトリ全体の変更やリリースにはmake checkを実行するよう指示しています。バックエンドおよびマネージドサービスの変更は、関連する統合テストと相互運用性ゲートを通過することが期待されます。READMEの上部には、CIとCodeQLのステータスバッジ、Goリファレンスバッジ、リリースバッジ、Goバージョンが表示されており、Goバッジはバージョン1.26.6を示しています。