Uso delle interfacce API Kafka

Configura Apache Kafka per la compatibilità delle API con Oracle Cloud Infrastructure Streaming. Quando i produttori utilizzano le API Kafka per interagire con Streaming, la decisione di quale partizione pubblicare un messaggio univoco viene gestita sul lato client da Kafka.

Di seguito sono riportati alcuni esempi di Java. Per esempi di Python, vedere Kafka Python Client and Streaming Quickstart.

Per ulteriori informazioni, vedere Supporto API Kafka.

Endpoint

Per i server bootstrap, utilizzare l'endpoint dell'area sulla porta 9092. Ad esempio:

streaming.us-phoenix-1.oci.oraclecloud.com:9092

Autenticazione

L'autenticazione con il protocollo Kafka utilizza i token di autenticazione e il meccanismo SASL/PLAIN. È possibile generare i token nella pagina dei dettagli utente della console. Per ulteriori informazioni, vedere Utilizzo dei token di autenticazione.

Suggerimento

Creare un gruppo/utente dedicato e concedere a tale gruppo l'autorizzazione per gestire i flussi nel compartimento o nella tenancy appropriati. Il criterio in Consenti agli amministratori di streaming di gestire le risorse di streaming consente al gruppo specificato di eseguire qualsiasi operazione con le risorse del servizio di streaming e di streaming correlate. È quindi possibile generare un token di autenticazione per l'utente creato e utilizzarlo nella configurazione del client Kafka.

Il nome utente deve avere il seguente formato:

tenancyName/domain/username/streamPoolId
Suggerimento

Se si utilizza l'SDK Java, è anche possibile utilizzare l'autorizzazione principal istanza.

Configurazione di Kafka

Impostare le seguenti proprietà per il client Kafka.

Per l'SDK Java

Impostazioni consigliate per Java SDK:

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}\";");

Impostazioni consigliate per i producer di SDK 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

Impostazioni consigliate per i consumer Java SDK:

properties.put("max.partition.fetch.bytes", 1024 * 1024); // limit request size to 1MB per partition
Per l'SDK Librdkafka

Impostazioni consigliate per il kit SDK 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}'

Impostazioni consigliate per i produttori di SDK 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

Impostazioni consigliate per i consumer dell'SDK Librdkafka:

'max.partition.fetch.bytes': 1024 * 1024 // limit request size to 1 MB per partition

Autorizzazione principal dell'istanza per l'SDK Java

Se si utilizza l'SDK Java, è possibile autorizzare un'istanza a interagire con Streaming anziché utilizzare i token di autenticazione.

Per configurare l'SDK Java per l'autorizzazione del principal dell'istanza:

  1. Verificare di disporre di un file di configurazione SDK e CLI OCI (Oracle Cloud Infrastructure) valido.
  2. Importa l'SDK Oracle Cloud Infrastructure per Java nel tuo progetto. Per ulteriori informazioni, vedere Guida introduttiva all'SDK per Java.
  3. Aggiungi il seguente SDK Oracle Cloud Infrastructure per la dipendenza 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>
  4. Modificare la proprietà sasl.mechanism della configurazione del client Kafka:
    properties.put("sasl.mechanism", OciMechanism.OCI_RSA_SHA256.mechanismName());
  5. Modificare la proprietà sasl.jaas.config della configurazione del client Kafka utilizzando una delle seguenti opzioni:
    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>\";");
    • Se config non viene specificato, viene utilizzato il percorso di configurazione predefinito (~/.oci/config).
    • Se profile non viene specificato, viene utilizzato il profilo predefinito (DEFAULT).

Per ulteriori informazioni: