第11章. ソースコネクターとシンクコネクターを作る
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
前の章で述べたように、Apache Kafkaプロジェクトには、MirrorMakerとFileStream コネクタの例を除いて、コネクタは含まれていない。その代わりに、Kafkaコミュニティと多くのベンダがコネクタを構築している。現在では、最も一般的なデータベース、データ処理ツール、ストレージツール、プロトコルに対応したものが数百種類ある。
しかし、使用するシステム用の コネクタがない場合や、既存のコネクタが使用ケースに適さない場合は、独自のソース・コネクタとシンク・コネクタを構築することができる。この章では、コネクタをゼロから実装するプロセスを説明する。Kafka Connect パブリック API の実装が必要なクラスを取り上げ、要件を満たすコネクタを構築するために必要な主な手順、ベストプラクティス、決定事項を説明する。
ソースコネクタとシンクコネクタは、構成要素の多くを共有しているため、独自のコネクタを構築する際の多くの作業や決定点は同じである。各タイプのコネクタの詳細に入る前に、コネクタの構築方法や共通のAPIなど、両方のタイプに適用される概念について見ていく。
共通の概念とAPI
前の章で説明したように、コネクターはコネクターとタスクの2つの部分で構成される。初期化エントリーポイントはコネクタで、その後、実際に作業を行う1つ以上のタスクを構成する。これらの部分は、Kafka Connect API で実装する必要があるConnector とTask クラスにマップする。(例えば、ソースコネクタはSourceConnector とSourceTask を実装する必要があり、シンクコネクタはSinkConnector とSinkTask を実装する必要がある)。実行時には、SourceConnector またはSinkConnector クラスのインスタンスが 1 つと、SourceTask またはSinkTask クラスのインスタンスが 1 つ以上存在する。
Kafka Connect APIには、Connector とTask クラスに加えて、コンテキストクラスがセットになっており、コネクタやタスクがランタイムと対話し、ランタイムが何をしているかを把握したり、ランタイムの動作に影響を与えたりすることができる。
これらのAPIを掘り下げる前に、必要なクラスにアクセスし、ビルド環境をセットアップする方法を見てみよう。
カスタムコネクタを構築する
コネクタを構築する際に にアクセスする必要があるクラスはすべて、Java で記述された Kafka Connect パブリック API の一部である。つまり、JavaまたはScalaのような互換性のある言語でコネクタを実装する必要がある。ソースコードでは、クラスはorg.apache.kafka.connect パッケージにあり、その後、これらのクラスはすべてconnect-api パッケージの一部として利用可能になる。コネクタプロジェクトの作成時に、これらのクラスにアクセスするには、この依存関係を追加する必要がある。他の Kafka Connect や Kafka JAR は公開 API ではないため、予告なく変更される可能性がある。実際には、connect-api は、kafka-clients も依存関係として持ってくる。この依存関係には、設定やメトリックを定義するための便利なクラスや、多くのユーティリティが含まれている。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access