El conector oficial MongoDB Kafka.
La documentación para el conector está disponible en https://docs.mongodb.com/kafka-connector/current/
El conector se publicará en maven central.
Si tiene problemas, preguntas o comentarios sobre MongoDB Kafka Connector, consulte nuestros canales de soporte. No envíe correos electrónicos directamente a ninguno de los desarrolladores del conector Kafka con problemas o preguntas; es más probable que obtenga una respuesta en los foros de la comunidad de MongoDB.
Como mínimo, incluya en su descripción la versión exacta del controlador que está utilizando. Si tiene problemas de conectividad, a menudo también resulta útil pegar la configuración del conector Kafka. También debe verificar los registros de su aplicación para detectar excepciones relacionadas con la conectividad y publicarlas también.
¿Crees que has encontrado un error? ¿Quiere ver una nueva característica en el controlador Kafka? Abra un caso en nuestra herramienta de gestión de problemas, JIRA:
Cree una cuenta e inicie sesión.
Navegue hasta el proyecto KAFKA.
Haga clic en Crear problema : proporcione tanta información como sea posible sobre el tipo de problema y cómo reproducirlo.
Los informes de errores en JIRA para el conector son públicos .
Si ha identificado una vulnerabilidad de seguridad en un conector o cualquier otro proyecto de MongoDB, infórmelo de acuerdo con las instrucciones aquí.
MongoDB Kafka Connector sigue el control de versiones semántico. Consulte el registro de cambios para obtener información sobre los cambios entre versiones.
Se requiere Java 8+ para construir y compilar el código fuente. Para construir y probar el controlador:
$ git clone https://github.com/mongodb/mongo-kafka.git $ cd mongo-kafka $ ./gradlew check -Dorg.mongodb.test.uri=mongodb://localhost:27017
El conjunto de pruebas requiere que mongod esté en ejecución. Tenga en cuenta que el conector de origen requiere un replicaSet.
Ross Lawley [email protected]
Conector de fregadero original obra de: Hans-Peter Grahsl: https://github.com/hpgrahsl/kafka-connect-mongodb
Se pueden encontrar contribuyentes adicionales aquí.
./gradlew publishArchives
: publica en Maven
./gradlew createConfluentArchive
: crea el archivo zip de lanzamiento de github/archivo confluente
Se requieren un par de pasos de configuración manual para ejecutar el código en IntelliJ:
Error: java: cannot find symbol. symbol: variable Versions
Correcciones: Cualquiera de los siguientes:
Ejecute la tarea compileBuildConfig
: por ejemplo: ./gradlew compileBuildConfig
o mediante Gradle > mongo-kafka > Tasks > other > compileBuildConfig
Configure compileBuildConfig
para que se ejecute antes de la compilación. a través de Gradle > Tareas > otro > haga clic derecho en compilarBuildConfig - haga clic en "Ejecutar antes de compilar"
Delegue todas las acciones de compilación a Gradle: Configuración > Compilación, Ejecución, Implementación > Herramientas de compilación > Gradle > Runner - marque "Delegar acciones de compilación/ejecución de IDE a Gradle"
La interfaz com.mongodb.kafka.connect.util.custom.credentials.CustomCredentialProvider
se puede implementar para proporcionar un objeto de tipo com.mongodb.MongoCredential
que se incluye en MongoClient que se construye para el conector receptor y de origen. Es necesario establecer las siguientes propiedades:
mongo.custom.auth.mechanism.enable - set to true. mongo.custom.auth.mechanism.providerClass - qualified class name of the implementation class
Propiedades adicionales y se pueden configurar según sea necesario dentro de la clase de implementación. Los métodos init y validar de la clase de implementación se llaman cuando se inicializa el conector.
Cuando se utiliza el mecanismo de autenticación MONGODB-AWS para atlas, se puede especificar la siguiente configuración:
"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/ "
Aquí el sample.AwsAssumeRoleCredentialProvider
debe estar disponible en la ruta de clases. mongodbaws.auth.mechanism.roleArn
es un ejemplo de propiedades personalizadas que sample.AwsAssumeRoleCredentialProvider
puede leer.
Aquí hay un código de muestra que puede funcionar.
clase pública AwsAssumeRoleCredentialProvider implementa CustomCredentialProvider { público AwsAssumeRoleCredentialProvider() {} @Override público MongoCredential getCustomCredential(Map, ?> mapa) { proveedor AWSCredentialsProvider = new DefaultAWSCredentialsProviderChain(); ProveedorawsFreshCredentialSupplier = () -> { AWSSecurityTokenService stsClient = AWSSecurityTokenServiceAsyncClientBuilder.standard() .withCredentials(proveedor) .withRegión("nosotros-este-1") .construir(); AssumeRoleRequest asumirRoleRequest = nuevo AssumeRoleRequest().withDurationSeconds(3600) .withRoleArn((String)map.get("mongodbaws.auth.mechanism.roleArn")) .withRoleSessionName("Test_Session"); AssumeRoleResult asumirRoleResult = stsClient.assumeRole(assumeRoleRequest); Credenciales creds = asumirRoleResult.getCredentials(); // Agregue su código para obtener nuevas credenciales return new AwsCredential(creds.getAccessKeyId(), creds.getSecretAccessKey(), creds.getSessionToken()); }; devolver MongoCredential.createAwsCredential(nulo, nulo) .withMechanismProperty(MongoCredential.AWS_CREDENTIAL_PROVIDER_KEY, awsFreshCredentialSupplier); } @Override public void validar(Mapa, ?> mapa) { String roleArn = (String) map.get("mongodbaws.auth.mechanism.roleArn"); if (StringUtils.isNullOrEmpty(roleArn)) { throw new RuntimeException("Valor no válido establecido para customProperty"); } } @Override public void init(Mapa, ?> mapa) { } }
Aquí está el pom.xml que puede construir el jar completo que contiene AwsAssumeRoleCredentialProvider
4.0.0 muestra AwsAssumeRoleCredentialProvider 1.0-INSTANTÁNEA org.apache.maven.plugins complemento-maven-shade 3.5.3 paquete sombra 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 conexión-kafka <ámbito>sistemaámbito>1.12.1-INSTANTÁNEA /Users/jagadish.nallapaneni/mongo-kafka/build/libs/mongo-kafka-connect-1.12.1-SNAPSHOT-confluent.jar 17 17 UTF-8