Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Neste guia de início rápido, exploramos como validar eventos de aplicativos Apache Kafka usando o Registro de Esquema do Azure para Hubs de Eventos.
Nesse caso de uso, um aplicativo produtor Kafka usa o esquema Avro armazenado no Registro de Esquema do Azure para, serializar o evento e publicá-los em um hub de tópico/evento Kafka nos Hubs de Eventos do Azure. O consumidor Kafka desserializa os eventos que consome dos Hubs de Eventos. Para isso, ele usa a ID do esquema do evento e o esquema Avro, que é armazenado no Registro do Esquema do Azure.
Pré-requisitos
Se você é novo nos Hubs de Eventos do Azure, consulte Visão geral dos Hubs de Eventos antes de fazer este início rápido.
Para concluir este início rápido, você precisa dos seguintes pré-requisitos:
- Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.
- Em seu ambiente de desenvolvimento, instale os seguintes componentes:
- Kit de Desenvolvimento Java (JDK) 1.7+.
- Transferir e instalar um arquivo binário Maven.
- Git
- Clone o repositório do Azure Schema Registry para Kafka.
Criar um hub de eventos
Siga as instruções do Início Rápido: Crie um Namespace de Event Hubs e um Hub de Eventos para criar um Namespace de Event Hubs e um Hub de Eventos. Em seguida, siga as instruções de Obter a cadeia de conexão para obter uma cadeia de conexão para seu namespace de Hubs de Eventos.
Anote as seguintes configurações que você usa no início rápido atual:
- Cadeia de conexão para o namespace Event Hubs
- Nome do hub de eventos
Criar um esquema
Siga as instruções de Criar esquemas usando o Registro de Esquema para criar um grupo de esquemas e um esquema.
Crie um grupo de esquemas chamado contoso-sg usando o portal do Registro de Esquema. Use Avro como o tipo de serialização e Nenhum para o modo de compatibilidade.
Nesse grupo de esquemas, crie um novo esquema Avro com nome de esquema:
Microsoft.Azure.Data.SchemaRegistry.example.Orderusando o seguinte conteúdo de esquema.{ "namespace": "Microsoft.Azure.Data.SchemaRegistry.example", "type": "record", "name": "Order", "fields": [ { "name": "id", "type": "string" }, { "name": "amount", "type": "double" }, { "name": "description", "type": "string" } ] }
Registrar um aplicativo para acessar o registro de esquema
Você pode usar a ID do Microsoft Entra para autorizar seu aplicativo produtor e consumidor Kafka a acessar os recursos do Registro do Esquema do Azure registrando seu aplicativo cliente com um locatário do Microsoft Entra no portal do Azure.
Para registar uma aplicação Microsoft Entra chamada example-app, consulte a secção Registar a sua aplicação com um inquilino Microsoft Entra.
- tenant.id - define a ID do locatário do aplicativo
- client.id - define a ID do cliente do aplicativo
- client.secret - define o segredo do cliente para autenticação
E se você estiver usando a identidade gerenciada, precisará:
- use.managed.identity.credential - indica que as credenciais MSI devem ser usadas, devem ser usadas para VM habilitada para MSI
- managed.identity.clientId - se especificado, ele cria credenciais MSI com determinado ID de cliente
- managed.identity.resourceId - se especificado, ele cria uma credencial MSI com determinado ID de recurso
Adicionar usuário à função Leitor do Registro de Esquema
Adicione sua conta de usuário à função Leitor de Registro de Esquema no nível do namespace. Você também pode usar a função de Colaborador do Registro de Esquema , mas isso não é necessário para este início rápido.
- Na página de namespace Hubs de Eventos , selecione Controle de acesso (IAM) no menu à esquerda.
- Na página Controle de acesso (IAM), selecione + Adicionar ->Adicionar atribuição de função no menu.
- Na página Tipo de atribuição , selecione Avançar.
- Na página Funções , selecione Leitor do Registro de Esquema (Visualização) e selecione Avançar na parte inferior da página.
- Use o link + Selecionar membros para adicionar o
example-appaplicativo que você criou na etapa anterior à função e, em seguida, selecione Avançar. - Na página Rever + atribuir, selecione Rever + atribuir.
Atualizar a configuração do aplicativo cliente de aplicativos Kafka
Você precisa atualizar a configuração do cliente das aplicações produtoras e consumidoras do Kafka com a configuração relacionada à aplicação Microsoft Entra que criámos e as informações do registo de esquemas.
Para atualizar a configuração do Kafka Producer, navegue até azure-schema-registry-for-kafka/tree/master/java/avro/samples/kafka-producer.
Atualize a configuração do aplicativo Kafka em src/main/resources/app.properties seguindo o guia de início rápido do Kafka para Hubs de Eventos.
Atualize os detalhes de configuração para o produtor em src/main/resources/app.properties usando a configuração relacionada ao registro de esquema e o aplicativo Microsoft Entra que você criou acima da seguinte maneira:
schema.group=contoso-sg schema.registry.url=https://<NAMESPACENAME>.servicebus.windows.net tenant.id=<> client.id=<> client.secret=<>Siga as mesmas instruções, e atualize também a configuração azure-schema-registry-for-kafka/tree/master/java/avro/samples/kafka-consumer.
Para as aplicações de produtor e consumidor Kafka, é usado o seguinte esquema Avro:
{ "namespace": "com.azure.schemaregistry.samples", "type": "record", "name": "Order", "fields": [ { "name": "id", "type": "string" }, { "name": "amount", "type": "double" }, { "name": "description", "type": "string" } ] }
Usando o produtor Kafka com validação de esquema Avro
Para executar o aplicativo produtor Kafka, navegue até azure-schema-registry-for-kafka/tree/master/java/avro/samples/kafka-producer.
Você pode executar o aplicativo produtor para que ele possa produzir registros específicos do Avro ou registros genéricos. Para o modo de registros específicos, você precisa primeiro gerar as classes no esquema do produtor usando o seguinte comando maven:
mvn generate-sourcesEm seguida, você pode executar o aplicativo produtor usando os seguintes comandos.
mvn clean package mvn -e clean compile exec:java -Dexec.mainClass="com.azure.schemaregistry.samples.producer.App"Após a execução bem-sucedida do aplicativo produtor, ele solicita que você escolha o cenário do produtor. Para este início rápido, você pode escolher a opção 1 - produzir Avro SpecificRecords.
Enter case number: 1 - produce Avro SpecificRecords 2 - produce Avro GenericRecordsApós a serialização e publicação de dados bem-sucedidas, você verá os seguintes logs de console em seu aplicativo produtor:
INFO com.azure.schemaregistry.samples.producer.KafkaAvroSpecificRecord - Sent Order {"id": "ID-0", "amount": 10.0, "description": "Sample order 0"} INFO com.azure.schemaregistry.samples.producer.KafkaAvroSpecificRecord - Sent Order {"id": "ID-1", "amount": 11.0, "description": "Sample order 1"} INFO com.azure.schemaregistry.samples.producer.KafkaAvroSpecificRecord - Sent Order {"id": "ID-2", "amount": 12.0, "description": "Sample order 2"}
Usando o consumidor Kafka com a validação de esquema Avro
Para executar o aplicativo Kafka consumer, navegue até azure-schema-registry-for-kafka/tree/master/java/avro/samples/kafka-consumer.
Você pode executar o aplicativo de consumidor para que ele possa consumir registros específicos do Avro ou registros genéricos. Para o modo de registros específicos, você precisa primeiro gerar as classes no esquema do produtor usando o seguinte comando maven:
mvn generate-sourcesEm seguida, você pode executar o aplicativo consumidor usando o seguinte comando.
mvn clean package mvn -e clean compile exec:java -Dexec.mainClass="com.azure.schemaregistry.samples.consumer.App"Após a execução bem-sucedida do aplicativo consumidor, ele solicita que você escolha o cenário do produtor. Para este início rápido, você pode escolher a opção 1 - consumir Avro SpecificRecords.
Enter case number: 1 - consume Avro SpecificRecords 2 - consume Avro GenericRecordsApós o consumo de dados e a desserialização bem-sucedidos, você verá os seguintes logs de console em seu aplicativo produtor:
INFO com.azure.schemaregistry.samples.consumer.KafkaAvroSpecificRecord - Order received: {"id": "ID-0", "amount": 10.0, "description": "Sample order 0"} INFO com.azure.schemaregistry.samples.consumer.KafkaAvroSpecificRecord - Order received: {"id": "ID-1", "amount": 11.0, "description": "Sample order 1"} INFO com.azure.schemaregistry.samples.consumer.KafkaAvroSpecificRecord - Order received: {"id": "ID-2", "amount": 12.0, "description": "Sample order 2"}
Limpeza de recursos
Exclua o namespace Hubs de Eventos ou exclua o grupo de recursos que contém o namespace.