官方 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 運行。請注意,來源連接器需要副本集。
羅斯·勞利 [email protected]
原始 Sink 連接器作者:Hans-Peter Grahsl:https://github.com/hpgrahsl/kafka-connect-mongodb
其他貢獻者可以在這裡找到。
./gradlew publishArchives
- 發佈到 Maven
./gradlew createConfluentArchive
- 建立匯合存檔/github 發布 zip 文件
在 IntelliJ 中執行程式碼需要幾個手動設定步驟:
錯誤: java: cannot find symbol. symbol: variable Versions
修復:以下任一項:
執行compileBuildConfig
任務:例如: ./gradlew compileBuildConfig
或透過Gradle>mongo-kafka>Tasks>other>compileBuildConfig
將compileBuildConfig
設定為Before Build 執行。透過 Gradle > 任務 > 其他 > 右鍵點選compileBuildConfig - 按一下“在建置之前執行”
將所有建置操作委託給 Gradle:設定 > 建置、執行、部署 > 建置工具 > Gradle > Runner - 勾選“將 IDE 建置/執行操作委託給 gradle”
可以實作com.mongodb.kafka.connect.util.custom.credentials.CustomCredentialProvider
介面來提供com.mongodb.MongoCredential
類型的對象,該物件包裝在為接收器和來源連接器建構的 MongoClient 中。需要設定以下屬性 -
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:///?authMechanism=MONGODB-AWS" "mongo.custom.auth.mechanism.enable": true, "mongo.custom.auth.mechanism.providerClass": "sample.AwsAssumeRoleCredentialProvider" "mongodbaws.auth.mechanism.roleArn": "arn:aws:iam:: :role/ "
此處, sample.AwsAssumeRoleCredentialProvider
必須在類別路徑上可用。 mongodbaws.auth.mechanism.roleArn
是一個可由sample.AwsAssumeRoleCredentialProvider
讀取的自訂屬性的範例。
這是可以工作的範例程式碼。
公用類別 AwsAssumeRoleCredentialProvider 實作 CustomCredentialProvider { 公用 AwsAssumeRoleCredentialProvider() {} @Override public MongoCredential getCustomCredential(Map, ?> map) {CredentialsProvider provider = newaultvider >ChavidencesProvider provider = newaultvider); 供應商awsFreshCredentialSupplier = () -> { AWSSecurityTokenService stsClient = AWSSecurityTokenServiceAsyncClientBuilder.standard() .withCredentials(提供者) .withRegion("us-east-1") 。 AssumeRoleRequest takeRoleRequest = new AssumeRoleRequest().withDurationSeconds(3600) .withRoleArn((String)map.get("mongodbaws.auth.mechanism.roleArn")) .withRoleSessionName("Test_Session"); AssumeRoleResult 假設RoleResult = stsClient.assumeRole(assumeRoleRequest); 憑證 creds = ShouldRoleResult.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("為 customProperty 設定的值無效"); } } @Override public void init(Map, ?> map) { } }
這是可以建構包含 AwsAssumeRoleCredentialProvider 的完整 jar 的 pom.xml
<專案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模型版本>範例 AwsAssumeRoleCredentialProvider <版本>1.0-SNAPSHOT版本> <建置> <外掛> <外掛>org.apache.maven.plugins maven-shade-plugin <版本>3.5.3版本> <配置> 配置> <處決> <執行> <階段>封裝階段> <目標> <目標>陰影目標> 目標> 執行> 處決> 插件> 插件> 構建> <依賴關係> <依賴關係>org.mongodb mongodb-driver-sync <版本>5.1.0版本> 依賴> <依賴關係>com.amazonaws aws-java-sdk <版本>1.12.723版本> 依賴> <依賴關係>org.slf4j slf4j-jdk14 <版本>1.7.28版本> 依賴> <依賴關係>kafka-connect kafka-connect <範圍>系統範圍> <版本>1.12.1-SNAPSHOT版本> <系統路徑>/Users/jagadish.nallapaneni/mongo-kafka/build/libs/mongo-kafka-connect-1.12.1-SNAPSHOT-confluence.jar 依賴> 依賴關係> <屬性>17 17 UTF-8 屬性> 項目>