Kafka-APIs verwenden
Konfigurieren Sie Apache Kafka für die API-Kompatibilität mit Oracle Cloud Infrastructure Streaming. Wenn Ihre Produzenten Kafka-APIs zur Interaktion mit Streaming verwenden, wird die Entscheidung, welche Partition eine eindeutige Nachricht veröffentlicht werden soll, auf Clientseite von Kafka getroffen.
Die folgenden Informationen enthalten Java-Beispiele. Beispiele für Python finden Sie unter Kafka-Python-Client und Streaming-Schnellstart.
Weitere Informationen finden Sie unter Kafka-API-Unterstützung.
Endpunkte
Verwenden Sie für Bootstrap-Server den Regionsendpunkt auf Port 9092. Beispiel:
streaming.us-phoenix-1.oci.oraclecloud.com:9092
Authentifizierung
Bei der Authentifizierung mit dem Kafka-Protokoll werden Authentifizierungstoken und der SASL/PLAIN-Mechanismus verwendet. Sie können Token auf der Seite mit den Benutzerdetails der Konsole generieren. Weitere Informationen finden Sie unter Mit Authentifizierungstoken arbeiten.
Erstellen Sie eine dedizierte Gruppe/einen dedizierten Benutzer, und erteilen Sie dieser Gruppe die Berechtigung zur Verwaltung von Streams im entsprechenden Compartment oder Mandanten. Mit der unter Verwalten von Streaming-Ressourcen durch Streaming-Administratoren zulassen beschriebenen Policy kann die angegebene Gruppe alle Aktionen mit Streaming und zugehörigen Streaming-Serviceressourcen ausführen. Dann können Sie ein Authentifizierungstoken für den erstellten Benutzer generieren und in der Kafka-Clientkonfiguration verwenden.
Ihr Benutzername muss das folgende Format aufweisen:
tenancyName/domain/username/streamPoolId
Kafka-Konfiguration
Legen Sie die folgenden Eigenschaften für den Kafka-Client fest.
Für das Java-SDKEmpfohlene Einstellungen für das 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}\";");
Empfohlene Einstellungen für Java SDK-Producers:
properties.put("retries", 5); // retries on transient errors and load balancing disconnection
properties.put("max.request.size", 1024 * 1024); // limit request size to 1MB
Empfohlene Einstellungen für Java SDK-Consumers:
properties.put("max.partition.fetch.bytes", 1024 * 1024); // limit request size to 1MB per partition
Empfohlene Einstellungen für das Librdkafka-SDK:
'metadata.broker.list': 'streaming.{region}.oci.oraclecloud.com:9092',
'security.protocol': 'SASL_SSL',
'sasl.mechanisms': 'PLAIN',
'sasl.username': '{tenancyName}/{username}/{streamPoolID}',
'sasl.password': '{authToken}'
Empfohlene Einstellungen für Librdkafka-SDK-Producers:
'message.send.max.retries': 5 // retries on transient errors and load balancing disconnection
'max.request.size': 1024 * 1024 // limit request size to 1 MB
Empfohlene Einstellungen für Librdkafka-SDK-Consumers:
'max.partition.fetch.bytes': 1024 * 1024 // limit request size to 1 MB per partition
Instanz-Principal-Autorisierung für das Java-SDK
Wenn Sie das Java-SDK verwenden, können Sie eine Instanz autorisieren, mit Streaming zu interagieren, anstatt Authentifizierungstoken zu verwenden.
So konfigurieren Sie das Java-SDK für die Instanz-Principal-Autorisierung:
- Prüfen Sie, ob eine gültige Oracle Cloud Infrastructure-(OCI-)SDK- und CLI-Konfigurationsdatei vorhanden ist.
- Importieren Sie das Oracle Cloud Infrastructure-SDK für Java in Ihr Projekt. Weitere Informationen finden Sie unter Erste Schritte mit dem SDK für Java.
- Fügen Sie das folgende Oracle Cloud Infrastructure-SDK für Java-Abhängigkeit hinzu:
<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>
- Ändern Sie die Eigenschaft
sasl.mechanism
der Kafka-Clientkonfiguration:properties.put("sasl.mechanism", OciMechanism.OCI_RSA_SHA256.mechanismName());
- Ändern Sie die Eigenschaft
sasl.jaas.config
der Kafka-Clientkonfiguration mit einer der folgenden Optionen: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>\";");
- Wenn
config
nicht angegeben ist, wird der Standardkonfigurationspfad verwendet (~/.oci/config
). - Wenn
profile
nicht angegeben ist, wird das Standardprofil verwendet (DEFAULT).
- Wenn