Použití schématu JSON s aplikacemi Apache Kafka
Tento kurz vás provede scénářem, ve kterém pomocí schémat JSON serializujete a deserializujete událost pomocí služby Azure Schema Registry ve službě Event Hubs.
V tomto případě aplikace producenta Kafka používá schéma JSON uložené ve službě Azure Schema Registry k serializaci události a jejich publikování do tématu Kafka nebo centra událostí ve službě Azure Event Hubs. Příjemce Kafka deserializuje události, které využívá ze služby Event Hubs. Pro to používá ID schématu události a schématu JSON, které je uloženo ve službě Azure Schema Registry.
Požadavky
Pokud s Azure Event Hubs teprve začínáte, podívejte se na přehled služby Event Hubs před tímto rychlým startem.
K dokončení tohoto rychlého startu potřebujete následující požadavky:
- Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet před tím, než začnete.
- Ve vývojovém prostředí nainstalujte následující komponenty:
- Java Development Kit (JDK) 1.7+.
- Stáhněte a nainstalujte binární archiv Maven.
- Git
- Naklonujte registr schémat Azure pro úložiště Kafka .
Vytvoření centra událostí
Postupujte podle pokynů z rychlého startu: Vytvořte obor názvů služby Event Hubs a centrum událostí a vytvořte obor názvů služby Event Hubs a centrum událostí. Potom postupujte podle pokynů v části Získání připojovací řetězec a získejte připojovací řetězec do oboru názvů služby Event Hubs.
Poznamenejte si následující nastavení, která používáte v aktuálním rychlém startu:
- řetězec Připojení ion pro obor názvů služby Event Hubs
- Název centra událostí
Vytvoření schématu
Postupujte podle pokynů k vytvoření schémat pomocí registru schémat a vytvoření skupiny schématu a schématu.
Vytvořte skupinu schémat s názvem contoso-sg pomocí portálu Registru schématu. Jako typ serializace použijte schéma JSON.
V této skupině schématu vytvořte nové schéma JSON s názvem schématu:
Microsoft.Azure.Data.SchemaRegistry.example.CustomerInvoice
pomocí následujícího obsahu schématu.{ "$id": "https://example.com/person.schema.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "CustomerInvoice", "type": "object", "properties": { "invoiceId": { "type": "string" }, "merchantId": { "type": "string" }, "transactionValueUsd": { "type": "integer" }, "userId": { "type": "string" } } }
Registrace aplikace pro přístup k registru schématu
Microsoft Entra ID můžete použít k autorizaci aplikace producenta a příjemce Kafka pro přístup k prostředkům služby Azure Schema Registry. Pokud ji chcete povolit, musíte svou klientskou aplikaci zaregistrovat v tenantovi Microsoft Entra z webu Azure Portal.
Postup registrace aplikace Microsoft Entra s názvem example-app
viz Registrace aplikace v tenantovi Microsoft Entra.
- tenant.id – nastaví ID tenanta aplikace.
- client.id – nastaví ID klienta aplikace.
- client.secret – nastaví tajný klíč klienta pro ověřování.
A pokud používáte spravovanou identitu, budete potřebovat:
- use.managed.identity.credential – indikuje, že se mají použít přihlašovací údaje MSI, měly by se použít pro virtuální počítač s podporou MSI.
- managed.identity.clientId – pokud je zadáno, vytvoří přihlašovací údaje MSI s daným ID klienta managed.identity.resourceId – pokud je zadáno, vytvoří přihlašovací údaje MSI s daným ID prostředku.
Přidání uživatele do role Čtenář registru schématu
Přidejte svůj uživatelský účet do role Čtenář registru schématu na úrovni oboru názvů. Můžete také použít roli Přispěvatel registru schématu, ale to není pro účely tohoto rychlého startu nutné.
- Na stránce Oboru názvů služby Event Hubs vyberte v nabídce vlevo řízení přístupu (IAM).
- Na stránce Řízení přístupu (IAM) v nabídce vyberte + Přidat ->Přidat přiřazení role.
- Na stránce Typ zadání vyberte Další.
- Na stránce Role vyberte Čtenář registru schématu a pak v dolní části stránky vyberte Další.
- Pomocí odkazu + Vybrat členy přidejte
example-app
do role aplikaci, kterou jste vytvořili v předchozím kroku, a pak vyberte Další. - Na stránce Revize a přiřazení vyberte Zkontrolovat a přiřadit.
Aktualizace konfigurace klientské aplikace aplikací Kafka
Potřebujete aktualizovat konfiguraci klienta aplikací producenta a příjemce Kafka pomocí podrobností o aplikaci Microsoft Entra a informacemi o registru schématu.
Pokud chcete aktualizovat konfiguraci producenta Kafka, přejděte na azure-schema-registry-for-kafka/tree/master/java/json/samples/kafka-producer.
Aktualizujte konfiguraci aplikace Kafka v src/main/resources/app.properties podle pokynů k rychlému startu Kafka pro službu Event Hubs.
Aktualizujte podrobnosti o konfiguraci pro producenta v nástroji src/main/resources/app.properties pomocí konfigurace související s registrem schématu a aplikace Microsoft Entra, kterou jste vytvořili v předchozím kroku, následujícím způsobem:
schema.group=contoso-sg schema.registry.url=https://<NAMESPACENAME>.servicebus.windows.net tenant.id=<> client.id=<> client.secret=<>
Postupujte podle stejných pokynů a aktualizujte také konfiguraci azure-schema-registry-for-kafka/tree/master/java/json/samples/kafka-consumer .
Pro aplikace producenta i příjemce Kafka se používá následující schéma JSON:
{ "$id": "https://example.com/person.schema.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "CustomerInvoice", "type": "object", "properties": { "invoiceId": { "type": "string" }, "merchantId": { "type": "string" }, "transactionValueUsd": { "type": "integer" }, "userId": { "type": "string" } } }
Použití producenta Kafka s ověřováním schématu JSON
Pokud chcete spustit aplikaci pro producenta Kafka, přejděte na azure-schema-registry-for-kafka/tree/master/java/json/samples/kafka-producer.
Aplikaci producenta můžete spustit, aby mohl vytvářet záznamy specifické pro schéma JSON nebo obecné záznamy. Pro konkrétní režim záznamů je nutné nejprve vygenerovat třídy proti schématu producenta pomocí následujícího příkazu maven:
mvn generate-sources
Potom můžete aplikaci producenta spustit pomocí následujících příkazů.
mvn clean package mvn -e clean compile exec:java -Dexec.mainClass="com.azure.schemaregistry.samples.producer.App"
Po úspěšném spuštění aplikace producenta vás vyzve k výběru scénáře producenta. Pro účely tohoto rychlého startu můžete zvolit možnost 1 – vytvořit specifickézáznamy.
Enter case number: 1 - produce SpecificRecords
Po úspěšné serializaci a publikování dat by se ve vaší aplikaci producenta měly zobrazit následující protokoly konzoly:
INFO com.azure.schemaregistry.samples.producer.KafkaJsonSpecificRecord - Sent Order Invoice 0 INFO com.azure.schemaregistry.samples.producer.KafkaJsonSpecificRecord - Sent Order Invoice 1 INFO com.azure.schemaregistry.samples.producer.KafkaJsonSpecificRecord - Sent Order Invoice 2
Použití příjemce Kafka s ověřováním schématu JSON
Pokud chcete spustit aplikaci Kafka consumer, přejděte na azure-schema-registry-for-kafka/tree/master/java/json/samples/kafka-consumer.
Aplikaci příjemce můžete spustit, aby mohl využívat konkrétní záznamy schématu JSON nebo obecné záznamy. Pro konkrétní režim záznamů je nutné nejprve vygenerovat třídy proti schématu producenta pomocí následujícího příkazu maven:
mvn generate-sources
Pak můžete aplikaci příjemce spustit pomocí následujícího příkazu.
mvn clean package mvn -e clean compile exec:java -Dexec.mainClass="com.azure.schemaregistry.samples.consumer.App"
Po úspěšném spuštění aplikace příjemce vás vyzve k výběru scénáře producenta. Pro účely tohoto rychlého startu můžete zvolit možnost 1 – spotřebovávat konkrétnízáznamy.
Enter case number: 1 - consume SpecificRecords
Po úspěšné spotřebě a deserializaci dat by se ve vaší aplikaci producenta měly zobrazit následující protokoly konzoly:
INFO com.azure.schemaregistry.samples.consumer.KafkaJsonSpecificRecord - Invoice received: {invoiceId=Invoice 0, merchantId=Merchant Id 0, transactionValueUsd=0, userId=User Id 0} INFO com.azure.schemaregistry.samples.consumer.KafkaJsonSpecificRecord - Invoice received: {invoiceId=Invoice 1, merchantId=Merchant Id 1, transactionValueUsd=1, userId=User Id 1} INFO com.azure.schemaregistry.samples.consumer.KafkaJsonSpecificRecord - Invoice received: {invoiceId=Invoice 2, merchantId=Merchant Id 2, transactionValueUsd=2, userId=User Id 2}
Vyčištění prostředků
Odstraňte obor názvů služby Event Hubs nebo odstraňte skupinu prostředků obsahující obor názvů.