Konektor MongoDB Kafka resmi.
Dokumentasi untuk konektor tersedia di https://docs.mongodb.com/kafka-connector/current/
Konektor akan dipublikasikan di maven central.
Untuk masalah, pertanyaan tentang, atau masukan untuk Konektor Kafka MongoDB, silakan lihat saluran dukungan kami. Harap jangan mengirim email langsung ke pengembang konektor Kafka mana pun jika ada masalah atau pertanyaan - kemungkinan besar Anda akan mendapatkan jawabannya di Forum Komunitas MongoDB.
Minimal, harap sertakan dalam deskripsi Anda versi persis driver yang Anda gunakan. Jika Anda mengalami masalah konektivitas, menempelkan konfigurasi konektor Kafka juga sering kali berguna. Anda juga harus memeriksa log aplikasi Anda untuk mengetahui adanya pengecualian terkait konektivitas dan mempostingnya juga.
Anda pikir Anda menemukan bug? Ingin melihat fitur baru di driver Kafka? Silakan buka kasus di alat manajemen masalah kami, JIRA:
Buat akun dan login.
Arahkan ke proyek KAFKA.
Klik Buat Masalah - Harap berikan informasi sebanyak mungkin tentang jenis masalah dan cara mereproduksinya.
Laporan bug di JIRA untuk konektor bersifat publik .
Jika Anda mengidentifikasi kerentanan keamanan di konektor atau proyek MongoDB lainnya, harap laporkan sesuai dengan petunjuk di sini.
Konektor MongoDB Kafka mengikuti pembuatan versi semantik. Lihat log perubahan untuk informasi tentang perubahan antar rilis.
Java 8+ diperlukan untuk membangun dan mengkompilasi sumbernya. Untuk membangun dan menguji driver:
$ git clone https://github.com/mongodb/mongo-kafka.git $ cd mongo-kafka $ ./gradlew check -Dorg.mongodb.test.uri=mongodb://localhost:27017
Rangkaian pengujian memerlukan mongod untuk dapat berjalan. Catatan, konektor sumber memerlukan replikaSet.
Ross Lawley [email protected]
Konektor Sink Asli berfungsi oleh: Hans-Peter Grahsl : https://github.com/hpgrahsl/kafka-connect-mongodb
Kontributor tambahan dapat ditemukan di sini.
./gradlew publishArchives
- menerbitkan ke Maven
./gradlew createConfluentArchive
- membuat arsip konfluen/file zip rilis github
Beberapa langkah konfigurasi manual diperlukan untuk menjalankan kode di IntelliJ:
Kesalahan: java: cannot find symbol. symbol: variable Versions
Perbaikan: Salah satu dari berikut ini:
Jalankan tugas compileBuildConfig
: misalnya: ./gradlew compileBuildConfig
atau melalui Gradle > mongo-kafka > Tugas > lainnya > kompilasiBuildConfig
Setel compileBuildConfig
untuk dijalankan Sebelum Pembuatan. melalui Gradle > Tugas > lainnya > klik kanan kompilasiBuildConfig - klik "Jalankan Sebelum Pembuatan"
Delegasikan semua tindakan build ke Gradle: Settings > Build, Execution, Deployment > Build Tools > Gradle > Runner - centang "Delegasikan tindakan build/run IDE ke gradle"
Antarmuka com.mongodb.kafka.connect.util.custom.credentials.CustomCredentialProvider
dapat diimplementasikan untuk menyediakan objek bertipe com.mongodb.MongoCredential
yang dibungkus dalam MongoClient yang dibuat untuk konektor sink dan sumber. Properti berikut perlu diatur -
mongo.custom.auth.mechanism.enable - set to true. mongo.custom.auth.mechanism.providerClass - qualified class name of the implementation class
Properti tambahan dan dapat diatur sesuai kebutuhan dalam kelas implementasi. Metode init dan validasi kelas implementasi dipanggil ketika konektor diinisialisasi.
Saat menggunakan mekanisme otentikasi MONGODB-AWS untuk atlas, seseorang dapat menentukan konfigurasi berikut -
"connection.uri": "mongodb+srv:///?authMechanism=MONGODB-AWS" "mongo.custom.auth.mechanism.enable": true, "mongo.custom.auth.mechanism.providerClass": "sample.AwsAssumeRoleCredentialProvider" "mongodbaws.auth.mechanism.roleArn": "arn:aws:iam:: :role/ "
Di sini sample.AwsAssumeRoleCredentialProvider
harus tersedia di classpath. mongodbaws.auth.mechanism.roleArn
adalah contoh properti khusus yang dapat dibaca oleh sample.AwsAssumeRoleCredentialProvider
.
Berikut adalah contoh kode yang dapat berfungsi.
public class AwsAssumeRoleCredentialProvider mengimplementasikan CustomCredentialProvider { public AwsAssumeRoleCredentialProvider() {} @Override public MongoCredential getCustomCredential(Map, ?> map) { AWSCredentialsProvider provider = new DefaultAWSCredentialsProviderChain(); PemasokawsFreshCredentialSupplier = () -> { AWSSecurityTokenService stsClient = AWSSecurityTokenServiceAsyncClientBuilder.standard() .withCredentials(penyedia) .withRegion("kita-timur-1") .membangun(); AssumeRoleRequest asumsiRoleRequest = baru AssumeRoleRequest().withDurationSeconds(3600) .withRoleArn((String)map.get("mongodbaws.auth.mechanism.roleArn")) .withRoleSessionName("Test_Session"); AssumeRoleResult asumsiRoleResult = stsClient.assumeRole(assumeRoleRequest); Kredit kredensial = asumsiRoleResult.getCredentials(); // Tambahkan kode Anda untuk mengambil kredensial baru return new AwsCredential(creds.getAccessKeyId(), creds.getSecretAccessKey(), creds.getSessionToken()); }; kembalikan MongoCredential.createAwsCredential(null, null) .withMechanismProperty(MongoCredential.AWS_CREDENTIAL_PROVIDER_KEY, awsFreshCredentialSupplier); } @Override public void validasi(Peta, ?> peta) { String roleArn = (String) map.get("mongodbaws.auth.mechanism.roleArn"); if (StringUtils.isNullOrEmpty(roleArn)) { throw new RuntimeException("Nilai yang ditetapkan untuk customProperty tidak valid"); } } @Override public void init(Peta, ?> peta) { } }
Berikut adalah pom.xml yang dapat membuat toples lengkap yang berisi AwsAssumeRoleCredentialProvider
4.0.0 sampel AwsAssumeRoleCredentialProvider 1.0-SNAPSHOT org.apache.maven.plugins plugin-maven-shade 3.5.3 paket teduhan org.mongodb sinkronisasi-driver-mongodb 5.1.0 com.amazonaws aws-java-sdk 1.12.723 org.slf4j slf4j-jdk14 1.7.28 kafka-koneksi kafka-connect sistem 1.12.1-SNAPSHOT /Users/jagadish.nallapaneni/mongo-kafka/build/libs/mongo-kafka-connect-1.12.1-SNAPSHOT-confluent.jar 17 17 UTF-8