IBM Cloud Docs
Utilizzo dell'API Kafka

Utilizzo dell'API Kafka

Kafka fornisce un'ampia gamma di API e client in una vasta gamma di linguaggi. Le API includono API core, API Streams e API Connect.

  • Kafka (Consumer, Producer e Admin API)
    Utilizza per inviare e ricevere i messaggi direttamente da uno o più argomenti Kafka. Il client Kafka Admin fornisce un'interfaccia semplice tramite l'API Kafka per la gestione delle risorse Kafka. È possibile creare, eliminare e gestire argomenti. Puoi utilizzare il client Admin anche per gestire i gruppi di consumatori e le configurazioni.
  • API flussi
    Un'API di elaborazione dei flussi di livello superiore per consumare, trasformare e produrre facilmente eventi tra gli argomenti.
  • Collegare l'API
    Un framework che consente integrazioni riutilizzabili o standard per il flusso di eventi verso e da sistemi esterni, come i database.

La seguente tabella riepiloga cosa puoi utilizzare con Event Streams:

Supporto del clientKafka nei piani Standard, Enterprise e Lite.
piano Enterprise Piano Standard Piano Lite
**Versione Kafka sul cluster ** Kafka 3.6 Kafka 3.6 Kafka 3.6
Versione client Kafka minima consigliata Kafka 2.6.0, o più tardi Kafka 2.6.0, o più tardi Kafka 2.6.0, o più tardi
Versioni client supportate Consultare Riepilogo di supporto per tutti i client consigliati
Kafka Connect supportato No
Kafka Streams supportati No
ksqlDB supportato No No
Requisiti di autenticazione Il client deve supportare l'autenticazione tramite il meccanismo SASL Plain e utilizzare l'estensione Server Name Indication (SNI) del protocollo TLSv1.2. Il client deve supportare l'autenticazione tramite il meccanismo SASL Plain e utilizzare l'estensione Server Name Indication (SNI) del protocollo TLSv1.2. Il client deve supportare l'autenticazione tramite il meccanismo SASL Plain e utilizzare l'estensione Server Name Indication (SNI) del protocollo TLSv1.2.

Scelta di un client Kafka da utilizzare con Event Streams

Il client ufficiale per l'API Kafka è scritto in Java e di conseguenza contiene le funzioni e le correzioni di bug più recenti. Per ulteriori informazioni su questa API, vedere Kafka Producer API 3.6 e Kafka Consumer API 3.6.

Per altre lingue, esegui uno dei seguenti client, tutti verificati con Event Streams.

Riepilogo del supporto per tutti i client consigliati

Sintesi dell'assistenza clienti
Client Lingua Versione consigliata Versione minima supportata [1] Link all'esempio
Client ufficiale di Apache Kafka:
Client Apache Kafka Java 3.6.2o successiva 2.5.0 Java campione della console

campione Liberty

Clienti terzi:
confluent-kafka-javascript Node.js Più recente 1.0.0
kafka - python confluente Python Più recente 1.4.0 EsempioKafka Python
confluente - kafka - go Vai Più recente 1.4.0
librdkafka C o C++ Più recente 1.4.0
nodo - rdkafka Node.js Più recente 2.8.0 EsempioNode.js
sarama Vai Più recente 1.40.0 Esempi Sarama

Collegamento del tuo client a Event Streams

Per informazioni su come configurare il tuo client Java per il collegamento a Event Streams, consulta Configurazione del tuo client.

Configurazione del tuo client API Kafka

Per stabilire una connessione, i client devono essere configurati per utilizzare almeno SASL PLAIN o SASL OAUTHBEARER su TLSv1.2 e per richiedere un nome utente e un elenco dei server di bootstrap. TLSv1.2 garantisce che le connessioni siano codificate e convalida l'autenticità dei broker (per evitare attacchi man - in - the - middle). SASL applica l'autenticazione su tutte le connessioni.

Per recuperare il nome utente, la password e l'elenco dei server di bootstrap, è necessario un oggetto credenziali di servizio o una chiave di servizio per l'istanza del servizio. Per ulteriori informazioni sulla creazione di questi oggetti, vedere Connessione a Event Streams.

Utilizzo di SASL PLAIN

Utilizzare le seguenti stringhe e proprietà.

  • Utilizza la stringa bootstrap_endpoints come elenco di server di avvio e passa questa stringa di coppie host e porta al tuo client Kafka.
  • Utilizzare le proprietà user e api_key come nome utente e password.

Per un client Java, l'esempio seguente mostra l'insieme minimo di proprietà, dove ${USERNAME}, ${PASSWORD} e ${BOOTSTRAP_ENDPOINTS} devono essere sostituiti dai valori recuperati in precedenza.

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

Se si utilizza un client Kafka precedente alla versione 0.10.2.1, la proprietà sasl.jaas.config non è supportata e occorre fornire la configurazione del client in un file di configurazione JAAS.

Utilizzo di SASL OAUTHBEARER

Prima di configurare il meccanismo SASL per il client Java, esistono due prerequisiti.

  • La versione client Kafka Java minima supportata è 3.1.0.
  • Il pacchetto jar aggiuntivo deve essere scaricato da Maven Central e reso disponibile nel percorso classi.

Se Maven viene utilizzato nel sistema di build, aggiungi le seguenti informazioni al file pom.xml nella sezione delle dipendenze.

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

Se Gradle viene utilizzata nel sistema di creazione, aggiungi le seguenti informazioni al file build.gradle nella sezione delle dipendenze.

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

Utilizzare le seguenti stringhe e proprietà.

  • Utilizza la stringa bootstrap_endpoints come elenco di server di avvio e passa questa stringa di coppie host e porta al tuo client Kafka.
  • Utilizza la stringa api_key come chiave API.
  • IAMOAuthBearerLoginCallbackHandler viene fornita dal package jar com.ibm.cloud.eventstreams:oauth-client:+.
  • L'endpoint token di IBM Cloud® Identity and Access Management https://iam.cloud.ibm.com/identity/token è configurato per generare il token dalla chiave API utilizzando il tipo di concessione specificato nella configurazione jaas. Viene eseguito sul lato client, quindi la chiave API non viene mai inviata al lato server e fornisce una sicurezza migliore rispetto a una chiave API di lunga durata.
  • L'endpoint chiave di Cloud Identity and Access Management https://iam.cloud.ibm.com/identity/keys è configurato per convalidare il token.

Per un client Java, l'esempio seguente mostra l'insieme minimo di proprietà, dove ${BOOTSTRAP_ENDPOINTS} e ${APIKEY} devono essere sostituiti dai valori recuperati in precedenza.

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

Il codice di esempio fa riferimento agli esempi Event Streams.

Per altre librerie client Kafka, fare riferimento alla relativa documentazione su come implementare il supporto OAUTHBEARER. Ad esempio:.

  • sarama: è richiesta un'implementazione dell'interfaccia AccessTokenProvider.
  • librdkafka: è richiesta un'implementazione del callback oauthbearer_token_refresh_cb.

Per informazioni su come generare un token IAM IBM Cloud utilizzando una chiave API, consulta il documento di IBM Cloud® Identity and Access Management.


  1. La prima versione convalidata in test continui. In genere, si tratta della versione iniziale disponibile negli ultimi 12 mesi, o di una versione più recente se sono noti problemi significativi. Se non è possibile eseguire nessuno dei client elencati, è possibile utilizzare altri client di terze parti che soddisfano i seguenti requisiti minimi (ad esempio, librdkafka ). 1. Supporta Kafka 1.40o versioni successive. 2. È possibile connettersi e autenticarsi utilizzando SASL PLAIN con TLSv1.2. 3. Supporta le estensioni SNI per TLS, in cui il nome host del server è incluso nell'handshake TLS. 4. Supporta la crittografia della curva ellittica. In tutti i casi, utilizzare la versione più recente del client. ↩︎