Usando APIs do Kafka

Configure o Apache Kafka para compatibilidade da API com o Oracle Cloud Infrastructure Streaming. Quando seus produtores usam APIs do Kafka para interagir com o serviço Streaming, a decisão de em qual partição publicar uma mensagem exclusiva é tratada no lado cliente pelo Kafka.

As informações a seguir fornecem exemplos de Java. Para exemplos de Python, consulte Kafka Python Client and Streaming Quickstart.

Para obter informações adicionais, consulte Suporte à API do Kafka.

Pontos Finais

Para servidores de bootstrap, use seu ponto final de região na porta 9092. Por exemplo:

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

Autenticação

A autenticação com o protocolo Kafka usa tokens de autenticação e o mecanismo SASL/PLAIN. Você pode gerar tokens na página de detalhes do usuário da Console. Consulte Como Trabalhar com Tokens de Autenticação para obter mais informações.

Dica

Crie um grupo/usuário dedicado e conceda a esse grupo a permissão para gerenciar streams no compartimento ou tenancy apropriado(a). A política em Permitir que administradores do streaming gerenciem recursos do streaming permite que o grupo especificado faça tudo com o streaming e os recursos relacionados ao serviço Streaming. Você então poderá gerar um token de autenticação para o usuário criado e usá-lo na configuração do cliente Kafka.

Seu nome de usuário deve estar no seguinte formato:

tenancyName/domain/username/streamPoolId
Dica

Se você estiver usando o Java SDK, também poderá usar a autorização do controlador de instâncias.

Configuração do Kafka

Defina as propriedades a seguir para seu cliente Kafka.

Para o Java SDK

Definições recomendadas para o 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}\";");

Definições recomendadas para produtores de Java SDK:

properties.put("retries", 5); // retries on transient errors and load balancing disconnection
		properties.put("max.request.size", 1024 * 1024); // limit request size to 1MB

Definições recomendadas para consumidores de Java SDK:

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

Definições recomendadas para 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}'

Definições recomendadas para produtores de Librdkafka SDK:

'message.send.max.retries': 5 // retries on transient errors and load balancing disconnection
		'max.request.size': 1024 * 1024 // limit request size to 1 MB

Definições recomendadas para consumidores de Librdkafka SDK:

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

Autorização do Controlador de Instâncias para o Java SDK

Se você estiver usando o Java SDK, poderá autorizar uma instância a interagir com o serviço Streaming em vez de usar tokens de autenticação.

Para configurar o Java SDK para autorização do controlador de instâncias:

  1. Verifique se você tem um arquivo de configuração de SDK e CLI válido do OCI (Oracle Cloud Infrastructure) .
  2. Importe o Oracle Cloud Infrastructure SDK for Java para seu projeto. Consulte Conceitos Básicos do SDK for Java para obter mais informações.
  3. Adicione a seguinte dependência do Oracle Cloud Infrastructure SDK for 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. Modifique a propriedade sasl.mechanism da sua configuração do cliente Kafka:
    properties.put("sasl.mechanism", OciMechanism.OCI_RSA_SHA256.mechanismName());
  5. Modifique a propriedade sasl.jaas.config da sua configuração do cliente Kafka usando uma das seguintes opções:
    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 não for especificado, o caminho de configuração padrão será usado (~/.oci/config).
    • Se profile não for especificado, o perfil padrão será usado (DEFAULT).

Para Obter Mais Informações