公式 MongoDB Kafka コネクタ。
コネクタのドキュメントは https://docs.mongodb.com/kafka-connector/current/ で入手できます。
コネクタは Maven Central で公開されます。
MongoDB Kafka コネクタに関する問題、質問、フィードバックについては、サポート チャネルをご覧ください。 Kafka コネクタ開発者に問題や質問を直接電子メールで送信しないでください。MongoDB コミュニティ フォーラムで回答が得られる可能性が高くなります。
少なくとも、使用しているドライバーの正確なバージョンを説明に含めてください。 接続に問題がある場合は、Kafka コネクタ構成を貼り付けることも役立つことがよくあります。また、接続関連の例外がないかアプリケーション ログを確認し、それらも投稿する必要があります。
バグを見つけたと思いますか? Kafka ドライバーの新機能を確認したいですか?問題管理ツール JIRA でケースを開いてください。
アカウントを作成してログインします。
KAFKA プロジェクトに移動します。
[問題の作成] をクリックします。問題の種類とその再現方法について、できるだけ多くの情報を提供してください。
コネクタに関する JIRA のバグ レポートは公開されています。
コネクタまたはその他の MongoDB プロジェクトでセキュリティの脆弱性を特定した場合は、こちらの手順に従って報告してください。
MongoDB Kafka コネクタはセマンティック バージョニングに従います。リリース間の変更点については、変更ログを参照してください。
ソースをビルドしてコンパイルするには Java 8 以降が必要です。ドライバーをビルドしてテストするには:
$ git clone https://github.com/mongodb/mongo-kafka.git $ cd mongo-kafka $ ./gradlew check -Dorg.mongodb.test.uri=mongodb://localhost:27017
テスト スイートでは mongod が実行されている必要があります。ソースコネクタにはreplicaSetが必要であることに注意してください。
ロス・ローリー [email protected]
オリジナルのシンク コネクタの作品: Hans-Peter Grahsl : https://github.com/hpgrahsl/kafka-connect-mongodb
追加の寄稿者はここで見つけることができます。
./gradlew publishArchives
- Maven に公開します
./gradlew createConfluentArchive
- Confluent アーカイブ/github リリース zip ファイルを作成します
IntelliJ でコードを実行するには、いくつかの手動構成手順が必要です。
エラー: java: cannot find symbol. symbol: variable Versions
修正:次のいずれか:
compileBuildConfig
タスクを実行します: 例: ./gradlew compileBuildConfig
または Gradle > mongo-kafka > Tasks > other >compileBuildConfig 経由
ビルド前に実行するように、 compileBuildConfig
設定します。 Gradle > タスク > その他 >compileBuildConfig を右クリックし、「ビルド前に実行」をクリックします。
すべてのビルド アクションを Gradle に委任します: [設定] > [ビルド、実行、デプロイメント] > [ビルド ツール] > [Gradle] > [ランナー] - [IDE ビルド/実行アクションを Gradle に委任する] にチェックを入れます。
com.mongodb.kafka.connect.util.custom.credentials.CustomCredentialProvider
インターフェイスを実装すると、シンクおよびソース コネクタ用に構築された MongoClient にラップされるcom.mongodb.MongoCredential
型のオブジェクトを提供できます。次のプロパティを設定する必要があります。
mongo.custom.auth.mechanism.enable - set to true. mongo.custom.auth.mechanism.providerClass - qualified class name of the implementation class
追加のプロパティは、実装クラス内で必要に応じて設定できます。実装クラスの init メソッドと validate メソッドは、コネクタの初期化時に呼び出されます。
アトラスに MONGODB-AWS 認証メカニズムを使用する場合、次の構成を指定できます。
"connection.uri": "mongodb+srv://<sever>/?authMechanism=MONGODB-AWS" "mongo.custom.auth.mechanism.enable": true, "mongo.custom.auth.mechanism.providerClass": "sample.AwsAssumeRoleCredentialProvider" "mongodbaws.auth.mechanism.roleArn": "arn:aws:iam::<ACCOUNTID>:role/<ROLENAME>"
ここでは、 sample.AwsAssumeRoleCredentialProvider
がクラスパス上で利用可能である必要があります。 mongodbaws.auth.mechanism.roleArn
は、 sample.AwsAssumeRoleCredentialProvider
で読み取ることができるカスタム プロパティの例です。
ここに動作するサンプルコードがあります。
public class AwsAssumeRoleCredentialProviderimplements CustomCredentialProvider { public AwsAssumeRoleCredentialProvider() {} @Override public MongoCredential getCustomCredential(Map<?, ?> map) { AWSCredentialsProvider プロバイダー = new DefaultAWSCredentialsProviderChain(); Supplier<AwsCredential> awsFreshCredentialSupplier = () -> { AWSSecurityTokenService stsClient = AWSSecurityTokenServiceAsyncClientBuilder.standard() .withCredentials(プロバイダー) .withRegion("us-east-1") 。建てる(); AssumeRoleRequest assignRoleRequest = new AssumeRoleRequest().withDurationSeconds(3600) .withRoleArn((String)map.get("mongodbaws.auth.mechanism.roleArn")) .withRoleSessionName("テストセッション"); AssumeRoleResult AssumeRoleResult = stsClient.assumeRole(assumeRoleRequest); 資格情報 creds = assignRoleResult.getCredentials(); // 新しい認証情報を取得するコードを追加します return new AwsCredential(creds.getAccessKeyId(), creds.getSecretAccessKey(), creds.getSessionToken()); }; MongoCredential.createAwsCredential(null, null) を返す .withMechanismProperty(MongoCredential.AWS_CREDENTIAL_PROVIDER_KEY, awsFreshCredentialSupplier); @Override public void validate(Map<?, ?> map) { String roleArn = (String) map.get("mongodbaws.auth.mechanism.roleArn"); if (StringUtils.isNullOrEmpty(roleArn)) { throw new RuntimeException("カスタムプロパティに設定された値が無効です"); } @Override public void init(Map<?, ?> map) { } }
これは、AwsAssumeRoleCredentialProvider を含む完全な jar を構築できる pom.xml です。
<?xml バージョン="1.0" エンコーディング="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http:/ /maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <モデルバージョン>4.0.0</モデルバージョン> <groupId>サンプル</groupId> <artifactId>AwsAssumeRoleCredentialProvider</artifactId> <バージョン>1.0-スナップショット</バージョン> <ビルド> <プラグイン> <プラグイン> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <バージョン>3.5.3</バージョン> <構成> <!-- ここに設定を入力します --> </設定> <処刑> <実行> <フェーズ>パッケージ</フェーズ> <目標> <goal>日陰</goal> </目標> </実行> </実行> </プラグイン> </プラグイン> </ビルド> <依存関係> <!-- Java MongoDB ドライバーの依存関係 --> <!-- https://mvnrepository.com/artifact/org.mongodb/mongodb-driver-sync --> <依存関係> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver-sync</artifactId> <バージョン>5.1.0</バージョン> </依存関係> <!-- https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk --> <依存関係> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk</artifactId> <バージョン>1.12.723</バージョン> </依存関係> <!-- slf4j ロギング依存関係。MongoDB Java ドライバーからの出力のロギングに必要 --> <依存関係> <groupId>org.slf4j</groupId> <artifactId>slf4j-jdk14</artifactId> <バージョン>1.7.28</バージョン> </依存関係> <依存関係> <groupId>kafka-connect</groupId> <artifactId>kafka-connect</artifactId> <スコープ>システム</スコープ> <バージョン>1.12.1-スナップショット</バージョン> <systemPath>/Users/jagadish.nallapaneni/mongo-kafka/build/libs/mongo-kafka-connect-1.12.1-SNAPSHOT-confluent.jar</systemPath> </依存関係> </依存関係> <プロパティ> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </プロパティ> </プロジェクト>