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.
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
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 JavaImpostazioni 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
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:
- Verificare di disporre di un file di configurazione SDK e CLI OCI (Oracle Cloud Infrastructure) valido.
- Importa l'SDK Oracle Cloud Infrastructure per Java nel tuo progetto. Per ulteriori informazioni, vedere Guida introduttiva all'SDK per Java.
- 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>
- Modificare la proprietà
sasl.mechanism
della configurazione del client Kafka:properties.put("sasl.mechanism", OciMechanism.OCI_RSA_SHA256.mechanismName());
- 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).
- Se