Sdílet prostřednictvím


Ověření schémat pro aplikace Apache Kafka pomocí Avro (Java)

V této příručce pro rychlý start se podíváme, jak ověřit událost z aplikací Apache Kafka pomocí služby Azure Schema Registry pro službu Event Hubs.

V tomto případě aplikace producenta Kafka používá schéma Avro 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, že používá ID schématu události a schéma Avro, které je uloženo ve službě Azure Schema Registry.

Diagram showing schema serialization/de-serialization for Kafka applications using Avro schema.

Předpoklady

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:

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.

  1. Vytvořte skupinu schémat s názvem contoso-sg pomocí portálu Registru schématu. Pro režim kompatibility použijte Avro jako typ serializace a Žádný .

  2. V této skupině schématu vytvořte nové schéma Avro s názvem schématu: Microsoft.Azure.Data.SchemaRegistry.example.Order pomocí následujícího obsahu schématu.

    {
      "namespace": "Microsoft.Azure.Data.SchemaRegistry.example",
      "type": "record",
      "name": "Order",
      "fields": [
        {
          "name": "id",
          "type": "string"
        },
        {
          "name": "amount",
          "type": "double"
        },
        {
          "name": "description",
          "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 registrací klientské aplikace 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é.

  1. Na stránce Oboru názvů služby Event Hubs vyberte v nabídce vlevo řízení přístupu (IAM).
  2. Na stránce Řízení přístupu (IAM) v nabídce vyberte + Přidat ->Přidat přiřazení role.
  3. Na stránce Typ zadání vyberte Další.
  4. Na stránce Role vyberte Čtenář registru schématu (Preview) a pak v dolní části stránky vyberte Další.
  5. Pomocí odkazu + Vybrat členy přidejte example-app do role aplikaci, kterou jste vytvořili v předchozím kroku, a pak vyberte Další.
  6. 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í konfigurace související s aplikací Microsoft Entra, kterou jsme vytvořili, a informace o registru schématu.

Pokud chcete aktualizovat konfiguraci producenta Kafka, přejděte na azure-schema-registry-for-kafka/tree/master/java/avro/samples/kafka-producer.

  1. Aktualizujte konfiguraci aplikace Kafka v src/main/resources/app.properties podle pokynů k rychlému startu Kafka pro službu Event Hubs.

  2. Aktualizujte podrobnosti o konfiguraci producenta v src/main/resources/app.properties pomocí konfigurace související s registrem schématu a aplikace Microsoft Entra, kterou jste vytvořili výše:

    schema.group=contoso-sg
    schema.registry.url=https://<NAMESPACENAME>.servicebus.windows.net
    
     tenant.id=<>
     client.id=<>
     client.secret=<>
    
  3. Postupujte podle stejných pokynů a aktualizujte konfiguraci azure-schema-registry-for-kafka/tree/master/java/avro/samples/kafka-consumer .

  4. Pro aplikace producenta i příjemce Kafka se používá následující schéma Avro:

    {
      "namespace": "com.azure.schemaregistry.samples",
      "type": "record",
      "name": "Order",
      "fields": [
        {
          "name": "id",
          "type": "string"
        },
        {
          "name": "amount",
          "type": "double"
        },
        {
          "name": "description",
          "type": "string"
        }
      ]
    }
    

Použití producenta Kafka s ověřováním schématu Avro

Pokud chcete spustit aplikaci pro producenta Kafka, přejděte na azure-schema-registry-for-kafka/tree/master/java/avro/samples/kafka-producer.

  1. Aplikaci producenta můžete spustit tak, aby mohl vytvářet záznamy specifické pro Avro 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
    
  2. 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"
    
  3. 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 Avro SpecificRecords.

    Enter case number:
    1 - produce Avro SpecificRecords
    2 - produce Avro GenericRecords
    
  4. 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.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"}
    

Použití příjemce Kafka s ověřováním schématu Avro

Pokud chcete spustit aplikaci Kafka consumer, přejděte na azure-schema-registry-for-kafka/tree/master/java/avro/samples/kafka-consumer.

  1. Aplikaci příjemce můžete spustit, aby mohl využívat konkrétní záznamy Avro 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
    
  2. 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"
    
  3. 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 Avro SpecificRecords.

    Enter case number:
    1 - consume Avro SpecificRecords
    2 - consume Avro GenericRecords
    
  4. 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.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"}
    

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ů.