IBM Cloud Docs
Utilización de la API de Kafka

Utilización de la API de Kafka

Kafka proporciona un conjunto enriquecido de API y clientes en una gran variedad de lenguajes. Las API incluyen la API principal, la API de Streams y la API de Connect.

  • Kafka aPI principal de (API de consumidor, productor y administrador)
    Se utiliza para enviar y recibir mensajes directamente desde uno de los temas de Kafka, o varios temas. El cliente de administración de Kafka proporciona una interfaz sencilla a través de la API de Kafka para gestionar los recursos de Kafka. Puede crear, suprimir y gestionar temas. También puede utilizar el cliente de administración para gestionar grupos de clientes y configuraciones.
  • API de Streams
    Una API de procesamiento de flujo de nivel superior para consumir, transformar y producir fácilmente eventos entre temas.
  • API de conexión
    Un marco que permite integraciones reutilizables o estándar para transmitir eventos hacia y desde sistemas externos, como bases de datos.

En la tabla siguiente se resume lo que puede utilizar con Event Streams:

Kafka asistencia al cliente en los planes Standard, Enterprise y Lite.
Plan de empresa Plan Estándar Plan Lite
Versión de Kafka en el clúster Kafka 3.6 Kafka 3.6 Kafka 3.6
Versión de cliente de Kafka mínima recomendada Kafka 2.6.0, o posterior Kafka 2.6.0, o posterior Kafka 2.6.0, o posterior
Versiones de cliente admitidas Consulte Resumen de soporte para todos los clientes recomendados
Soporte a Kafka Connect No
Soporte a Kafka Streams No
Soporte a ksqlDB No No
Requisitos de autenticación El cliente debe admitir la autenticación mediante el mecanismo SASL Plain y utilizar la extensión Server Name Indication (SNI) del protocolo TLSv1.2. El cliente debe admitir la autenticación mediante el mecanismo SASL Plain y utilizar la extensión Server Name Indication (SNI) del protocolo TLSv1.2. El cliente debe admitir la autenticación mediante el mecanismo SASL Plain y utilizar la extensión Server Name Indication (SNI) del protocolo TLSv1.2.

Elección de un cliente Kafka para utilizarlo con Event Streams

El cliente oficial de la API de Kafka está escrito en Java y, como tal, contiene las funciones y correcciones de errores más recientes. Para obtener más información sobre esta API, consulte Kafka API de productor 3.6 y Kafka API de consumidor 3.6.

Para otros idiomas, ejecute uno de los clientes siguientes, todos los cuales se prueban con Event Streams.

Soporte al resumen de todos los clientes recomendados

Resumen de asistencia al cliente
Cliente Idioma Versión recomendada Versión mínima soportada [1] Enlace al ejemplo
Cliente Apache Kafka oficial:
Cliente Apache Kafka Java 3.6.2o posterior 2.5.0 Ejemplo de consola Java

Ejemplo de Liberty

Clientes de terceros:
confluent-kafka-javascript Node.js Más reciente 1.0.0
confluent-kafka-python Python Más reciente 1.4.0 Ejemplo de Kafka Python
confluent-kafka-go Go Más reciente 1.4.0
librdkafka C o C++ Más reciente 1.4.0
node-rdkafka Node.js Más reciente 2.8.0 Ejemplo deNode.js
sarama Go Más reciente 1.40.0 Ejemplos de Sarama

Conexión de su cliente a Event Streams

Para obtener información sobre cómo configurar el cliente Java para que se conecte a Event Streams, consulte Configuración de su cliente.

Configuración del cliente de API Kafka

Para establecer una conexión, los clientes deben estar configurados para utilizar SASL PLAIN o SASL OAUTHBEARER a través de TLSv1.2 como mínimo y para requerir un nombre de usuario y una lista de los servidores bootstrap. TLSv1.2 garantiza que las conexiones estén cifradas y valida la autenticidad de los intermediarios (para evitar ataques de intermediarios). SASL aplica la autenticación en todas las conexiones.

Para recuperar el nombre de usuario, la contraseña y la lista de servidores de arranque, se requiere un objeto de credenciales de servicio o una clave de servicio para la instancia de servicio. Para obtener más información sobre la creación de estos objetos, consulte Conexión a Event Streams.

Utilización de SASL PLAIN

Utilice las siguientes series y propiedades.

  • Utilice la serie bootstrap_endpoints como lista de servidores de rutina de carga y pase esta serie de pares de host y puerto al cliente Kafka.
  • Utilice las propiedades user y api_key como nombre de usuario y contraseña.

Para un cliente de Java, el siguiente ejemplo muestra el conjunto mínimo de propiedades, donde ${USERNAME}, ${PASSWORD} y ${BOOTSTRAP_ENDPOINTS} deben ser reemplazados por los valores que recuperó anteriormente.

bootstrap.servers=${BOOTSTRAP_ENDPOINTS}
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="${USERNAME}" password="${PASSWORD}";
security.protocol=SASL_SSL
ssl.protocol=TLSv1.2
ssl.enabled.protocols=TLSv1.2
ssl.endpoint.identification.algorithm=HTTPS

Si utiliza un cliente Kafka anterior a la versión 0.10.2.1, la propiedad sasl.jaas.config no es compatible y, en su lugar, debe proporcionar la configuración del cliente en un archivo de configuración JAAS.

Utilización de SASL OAUTHBEARER

Antes de configurar el mecanismo SASL para el cliente Java, hay dos requisitos previos.

  • La versión mínima soportada del cliente Kafka Java es 3.1.0.
  • El paquete jar adicional debe descargarse de Maven Central y estar disponible en la vía de acceso de clases.

Si Maven se utiliza en el sistema de compilación, añada la siguiente información al archivo pom.xml en la sección de dependencias.

<dependency>
    <groupId>com.ibm.cloud.eventstreams</groupId>
    <artifactId>oauth-client</artifactId>
    <version>1.3.1</version>
</dependency>

Si se utiliza Gradle en el sistema de compilación, añada la siguiente información al archivo build.gradle en la sección de dependencias.

implementation com.ibm.cloud.eventstreams:oauth-client:1.3.1

Utilice las siguientes series y propiedades.

  • Utilice la serie bootstrap_endpoints como lista de servidores de rutina de carga y pase esta serie de pares de host y puerto al cliente Kafka.
  • Utilice la serie api_key como clave de API.
  • El IAMOAuthBearerLoginCallbackHandler lo proporciona el paquete jar com.ibm.cloud.eventstreams:oauth-client:+.
  • El punto final de señal de IBM Cloud® Identity and Access Management https://iam.cloud.ibm.com/identity/token está configurado para generar señal a partir de la clave de API utilizando el tipo de otorgamiento especificado en jaas config. Se realiza en el lado del cliente, por lo que la clave de API nunca se envía al lado del servidor y proporciona una mejor seguridad que una clave de API de larga duración.
  • El punto final de clave de Cloud Identity and Access Management https://iam.cloud.ibm.com/identity/keys está configurado para validar la señal.

Para un cliente de Java, el siguiente ejemplo muestra el conjunto mínimo de propiedades, donde ${BOOTSTRAP_ENDPOINTS} y ${APIKEY} deben sustituirse por los valores que recuperó anteriormente.

bootstrap.servers=${BOOTSTRAP_ENDPOINTS}
sasl.mechanism=OAUTHBEARER
sasl.jaas.config=org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required grant_type="urn:ibm:params:oauth:grant-type:apikey" apikey="${APIKEY}";
sasl.login.callback.handler.class=com.ibm.eventstreams.oauth.client.IAMOAuthBearerLoginCallbackHandler
sasl.oauthbearer.token.endpoint.url=https://iam.cloud.ibm.com/identity/token
sasl.oauthbearer.jwks.endpoint.url=https://iam.cloud.ibm.com/identity/keys
security.protocol=SASL_SSL
ssl.protocol=TLSv1.2
ssl.enabled.protocols=TLSv1.2
ssl.endpoint.identification.algorithm=HTTPS

El código de ejemplo hace referencia a los ejemplos deEvent Streams.

Para otras libarias de cliente Kafka, consulte su documentación sobre cómo implementar el soporte de OAUTHBEARER. Por ejemplo:.

  • sarama: es necesaria una implementación de la interfaz AccessTokenProvider.
  • librdkafka: es necesaria una implementación de la devolución de llamada oauthbearer_token_refresh_cb.

Para obtener información sobre cómo generar una señal de IAM de IBM Cloud utilizando una clave de API, consulte el documento de IBM Cloud® Identity and Access Management.


  1. La primera versión que se validó en pruebas continuas. Por lo general, es la versión inicial disponible en los últimos 12 meses, o más reciente si se sabe que existen problemas importantes. Si no puede ejecutar ninguno de los clientes que se enumeran, puede utilizar otros clientes de terceros que cumplan los siguientes requisitos mínimos (por ejemplo, librdkafka ). 1. Da soporte a Kafka 1.40o posterior. 2. Puede conectarse y autenticarse utilizando SASL PLAIN con TLSv1.2. 3. Admite las extensiones SNI para TLS cuando el nombre de host del servidor se incluye en el protocolo de enlace TLS. 4. Da soporte a la criptografía de curva elíptica. En todos los casos, utilice la versión más reciente del cliente. ↩︎