Uso de API de Kafka
Configure Apache Kafka para la compatibilidad de las API con Oracle Cloud Infrastructure Streaming. Cuando los productores utilizan las API de Kafka para interactuar con Streaming, la decisión en la que se publica un mensaje único la gestiona Kafka en el cliente.
La siguiente información proporciona ejemplos de Java. Para ver ejemplos de Python, consulte Inicio rápido de Streaming y cliente Python de Kafka.
Consulte Soporte de las API de Kafka para obtener más información.
Puntos finales
Para los servidores de inicialización de datos, utilice el punto final de la región en el puerto 9092. Por ejemplo:
streaming.us-phoenix-1.oci.oraclecloud.com:9092
Autenticación
La autenticación con el protocolo de Kafka utiliza tokens de autenticación y el mecanismo SASL/PLAIN. Puede generar tokens en la página de detalles del usuario de la consola. Consulte Trabajar con tokens de autenticación para obtener más información.
Cree un grupo/usuario dedicado y otorgue a ese grupo el permiso para gestionar flujos en el compartimento o el arrendamiento adecuados. La política de Permitir a los administradores de flujos gestionar recursos de flujo permite al grupo especificado realizar todas las acciones con el flujo y los recursos del servicio Streaming relacionados. A continuación puede generar un token de autenticación para el usuario que ha creado y utilizarlo en la configuración del cliente de Kafka.
Su nombre de usuario debe tener el siguiente formato:
tenancyName/domain/username/streamPoolId
Si utiliza el SDK de Java, también puede utilizar la autorización de principal de instancia.
Configuración de Kafka
Defina las siguientes propiedades para el cliente de Kafka.
Para el SDK de JavaConfiguración recomendada para el SDK de Java:
Properties properties = new Properties();
properties.put("bootstrap.servers", "streaming.{region}.oci.oraclecloud.com:9092");
properties.put("security.protocol", "SASL_SSL");
properties.put("sasl.mechanism", "PLAIN");
properties.put("sasl.jaas.config", "org.apache.kafka.common.security.plain.PlainLoginModule required username=\"{tenancyName}/{username}/{streamPoolId}\" password=\"{authToken}\";");
Configuración recomendada para los productores de SDK de Java:
properties.put("retries", 5); // retries on transient errors and load balancing disconnection
properties.put("max.request.size", 1024 * 1024); // limit request size to 1MB
Configuración recomendada para los consumidores de SDK de Java:
properties.put("max.partition.fetch.bytes", 1024 * 1024); // limit request size to 1MB per partition
Configuración recomendada para el SDK de Librdkafka:
'metadata.broker.list': 'streaming.{region}.oci.oraclecloud.com:9092',
'security.protocol': 'SASL_SSL',
'sasl.mechanisms': 'PLAIN',
'sasl.username': '{tenancyName}/{username}/{streamPoolID}',
'sasl.password': '{authToken}'
Configuración recomendada para los productores de SDK de Librdkafka:
'message.send.max.retries': 5 // retries on transient errors and load balancing disconnection
'max.request.size': 1024 * 1024 // limit request size to 1 MB
Configuración recomendada para los consumidores de SDK de Librdkafka:
'max.partition.fetch.bytes': 1024 * 1024 // limit request size to 1 MB per partition
Autorización de principal de instancia para el SDK de Java
Si utiliza el SDK de Java, puede autorizar a una instancia a interactuar con Streaming en lugar de utilizar tokens de autenticación.
Para configurar el SDK de Java para la autorización de principal de instancia:
- Verifique que tiene un archivo de configuración de SDK y CLI válido de Oracle Cloud Infrastructure (OCI).
- Importe el SDK de Oracle Cloud Infrastructure para Java en el proyecto. Consulte la introducción al SDK para Java para obtener más información.
- Agregue el siguiente SDK de Oracle Cloud Infrastructure para la dependencia de Java:
<dependency> <groupId>com.oracle.oci.sdk</groupId> <artifactId>oci-apisdk-java-sdk-addons-sasl</artifactId> <optional>false</optional> <version>1.13.1</version> <!-- that's the minimum version to use --> </dependency>
- Modifique la propiedad
sasl.mechanism
de la configuración de cliente de Kafka:properties.put("sasl.mechanism", OciMechanism.OCI_RSA_SHA256.mechanismName());
- Modifique la propiedad
sasl.jaas.config
de la configuración de cliente de Kafka mediante una de las siguientes opciones:properties.put("sasl.jaas.config", "com.oracle.bmc.auth.sasl.InstancePrincipalsLoginModule required intent=\"streamPoolId:<streamPoolId>\";");
properties.put("sasl.jaas.config", "com.oracle.bmc.auth.sasl.UserPrincipalsLoginModule required config=\"<pathToConfig>\" profile=\"<profile>\" intent=\"streamPoolId:<streamPoolId>\";");
- Si no se ha especificado
config
, se utilizará la ruta de configuración por defecto (~/.oci/config
). - Si no se ha especificado
profile
, se utilizará el perfil por defecto (DEFAULT).
- Si no se ha especificado
Para obtener más información
- Documentación de Apache Kafka
- Publicación de blog: Oracle Streaming Service Producer and Consumer