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.

Tipp

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
Tipp

Wenn Sie das Java-SDK verwenden, können Sie auch die Instanz-Principal-Autorisierung nutzen.

Kafka-Konfiguration

Legen Sie die folgenden Eigenschaften für den Kafka-Client fest.

Für das Java-SDK

Empfohlene 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
Für das Librdkafka-SDK

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:

  1. Prüfen Sie, ob eine gültige Oracle Cloud Infrastructure-(OCI-)SDK- und CLI-Konfigurationsdatei vorhanden ist.
  2. 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.
  3. 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>
  4. Ändern Sie die Eigenschaft sasl.mechanism der Kafka-Clientkonfiguration:
    properties.put("sasl.mechanism", OciMechanism.OCI_RSA_SHA256.mechanismName());
  5. Ä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).

Weitere Informationen