Официальный коннектор MongoDB Kafka.
Документация для соединителя доступна по адресу https://docs.mongodb.com/kafka-connector/current/.
Коннектор будет опубликован на maven Central.
Если у вас возникли проблемы, вопросы или отзывы о MongoDB Kafka Connector, обратитесь в наши каналы поддержки. Пожалуйста, не пишите напрямую разработчикам коннекторов 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]
Оригинальный разъем для раковины, работа: Ханс-Питер Грасл: https://github.com/hpgrahsl/kafka-connect-mongodb
Дополнительных участников можно найти здесь.
./gradlew publishArchives
— публикует в Maven
./gradlew createConfluentArchive
— создает zip-файл слитного архива/выпуска github.
Для запуска кода в IntelliJ требуется несколько шагов ручной настройки:
Ошибка: java: cannot find symbol. symbol: variable Versions
Исправления: Любое из следующего:
Запустите задачу compileBuildConfig
: например: ./gradlew compileBuildConfig
или через Gradle > mongo-kafka > Tasks > другое > compileBuildConfig.
Установите compileBuildConfig
для выполнения перед сборкой. через 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://<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
.
Вот пример кода, который может работать.
общественный класс AwsAssumeRoleCredentialProvider реализует CustomCredentialProvider {public AwsAssumeRoleCredentialProvider() {} @Override public MongoCredential getCustomCredential (Map<?, ?> карта) {AWSCredentialsProvider поставщик = новый DefaultAWSCredentialsProviderChain(); Поставщик<AwsCredential> awsFreshCredentialSupplier = () -> { AWSSecurityTokenService stsClient = AWSSecurityTokenServiceAsyncClientBuilder.standard() .withCredentials(поставщик) .withRegion("нас-восток-1") .строить(); AssumeRoleRequest ПредположимRoleRequest = новый AssumeRoleRequest().withDurationSeconds(3600) .withRoleArn((String)map.get("mongodbaws.auth.mechanism.roleArn")) .withRoleSessionName("Test_Session"); AssumeRoleResult предполагаетRoleResult = stsClient.assumeRole(assumeRoleRequest); Учетные данные creds = submitRoleResult.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<?, ?> карта) { } }
Вот pom.xml, который может создать полную банку, содержащую AwsAssumeRoleCredentialProvider.
<?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"> <modelVersion>4.0.0</modelVersion> <groupId>пример</groupId> <artifactId>AwsAssumeRoleCredentialProvider</artifactId> <версия>1.0-SNAPSHOT</version> <сборка> <плагины> <плагин> <groupId>org.apache.maven.plugins</groupId> <artifactId>плагин maven-shade</artifactId> <версия>3.5.3</версия> <конфигурация> <!-- поместите сюда свои конфигурации --> </конфигурация> <казни> <исполнение> <phase>пакет</phase> <цели> <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, необходимая для регистрации выходных данных Java-драйвера MongoDB --> <зависимость> <groupId>org.slf4j</groupId> <artifactId>slf4j-jdk14</artifactId> <версия>1.7.28</версия> </зависимость> <зависимость> <groupId>kafka-connect</groupId> <artifactId>kafka-connect</artifactId> <scope>система</scope> <версия>1.12.1-SNAPSHOT</version> <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> </свойства> </проект>