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.
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
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 SDKDefiniçõ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
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:
- Verifique se você tem um arquivo de configuração de SDK e CLI válido do OCI (Oracle Cloud Infrastructure) .
- Importe o Oracle Cloud Infrastructure SDK for Java para seu projeto. Consulte Conceitos Básicos do SDK for Java para obter mais informações.
- 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>
- Modifique a propriedade
sasl.mechanism
da sua configuração do cliente Kafka:properties.put("sasl.mechanism", OciMechanism.OCI_RSA_SHA256.mechanismName());
- 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).
- Se