Utilisation des API Kafka

Configurez Apache Kafka pour la compatibilité d'API avec Oracle Cloud Infrastructure Streaming. Lorsque vos émetteurs utilisent des API Kafka pour interagir avec Streaming, le choix de la partition vers laquelle publier un message unique est géré côté client par Kafka.

Les informations suivantes fournissent des exemples Java. Pour obtenir des exemples Python, reportez-vous à Démarrage rapide pour les clients Python Kafka et Streaming.

Pour plus d'informations, reportez-vous à Prise en charge des API Kafka.

Adresses

Pour les serveurs de démarrage, utilisez l'adresse de région sur le port 9092. Par exemple :

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

Authentification

L'authentification avec le protocole Kafka utilise des jetons d'authentification et le mécanisme SASL/PLAIN. Vous pouvez générer des jetons sur la page de détails de l'utilisateur de la console. Pour plus d'informations, reportez-vous à Utilisation des jetons d'authentification.

Conseil

Créez un groupe/utilisateur dédié et accordez-lui le droit d'accès permettant de gérer les flux de données dans la location ou le compartiment approprié. La stratégie dans Autoriser les administrateurs du service Streaming à gérer les ressources Streaming permet au groupe indiqué de réaliser toutes les opérations de transmission en continu et celles relatives aux ressources associées au service Streaming. Vous pouvez ensuite générer un jeton d'authentification pour l'utilisateur que vous avez créé et l'utiliser dans votre configuration client Kafka.

Le nom utilisateur doit avoir le format suivant :

tenancyName/domain/username/streamPoolId
Conseil

Si vous utilisez le kit SDK Java, vous pouvez également recourir à l'autorisation de principal d'instance.

Configuration Kafka

Définissez les propriétés suivantes pour votre client Kafka.

Pour le kit SDK Java

Paramètres recommandés pour le kit SDK Java :

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

Paramètres recommandés pour les émetteurs de kit 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

Paramètres recommandés pour les destinataires de kit SDK Java :

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

Paramètres recommandés pour le 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}'

Paramètres recommandés pour les émetteurs de kit 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

Paramètres recommandés pour les destinataires de kit SDK Librdkafka :

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

Autorisation de principal d'instance pour le kit SDK Java

Si vous utilisez le kit SDK Java, vous pouvez autoriser une instance à interagir avec Streaming au lieu de recourir aux jetons d'authentification.

Afin de configurer le kit SDK Java pour l'autorisation de principal d'instance, procédez comme suit :

  1. Vérifiez que vous disposez d'un fichier de configuration d'interface de ligne de commande et de kit SDK Oracle Cloud Infrastructure (OCI) valide.
  2. Importez le kit SDK Oracle Cloud Infrastructure pour Java dans le projet. Pour plus d'informations, reportez-vous à Introduction au kit SDK pour Java.
  3. Ajoutez la dépendance de kit SDK Oracle Cloud Infrastructure pour Java suivante :
    <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. Modifiez la propriété sasl.mechanism de la configuration de client Kafka :
    properties.put("sasl.mechanism", OciMechanism.OCI_RSA_SHA256.mechanismName());
  5. Modifiez la propriété sasl.jaas.config de la configuration de client Kafka à l'aide de l'une des possibilités suivantes :
    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>\";");
    • Si config n'est pas spécifié, le chemin de configuration par défaut est utilisé (~/.oci/config).
    • Si profile n'est pas spécifié, le profil par défaut est utilisé (DEFAULT).

Informations supplémentaires