Apache Kafka-alkalmazások sémáinak érvényesítése az Avro (Java) használatával

Ebben a rövid útmutatóban bemutatjuk, hogyan érvényesítheti az eseményeket Apache Kafka-alkalmazásokból az Azure Schema Registry for Event Hubs használatával.

Ebben a használati esetben egy Kafka-gyártó alkalmazás az Azure Schema Registryben tárolt Avro-sémát használja az esemény szerializálására és közzétételére egy Kafka-témakörben/eseményközpontban az Azure Event Hubsban. A Kafka-fogyasztó deszerializálja az Event Hubsból felhasznált eseményeket. Ehhez az esemény sémaazonosítóját és az Azure Schema Registryben tárolt Avro-sémát használja.

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

Előfeltételek

Ha még nem ismerkedik az Azure Event Hubs szolgáltatásokkal, a rövid útmutató előtt tekintse meg az Event Hubs áttekintését .

A rövid útmutató elvégzéséhez a következő előfeltételekre van szüksége:

Eseményközpont létrehozása

Kövesse a rövid útmutató utasításait: Event Hubs-névtér és eseményközpont létrehozása az Event Hubs-névtér és egy eseményközpont létrehozásához. Ezután kövesse a Get the kapcsolati sztring utasításait, hogy lekérjen egy kapcsolati sztring az Event Hubs-névtérbe.

Jegyezze fel az alábbi beállításokat, amelyeket az aktuális rövid útmutatóban használ:

  • Csatlakozás ion sztring az Event Hubs-névtérhez
  • Az eseményközpont neve

Séma létrehozása

Sémacsoport és séma létrehozásához kövesse a Sémaregisztrációs adatbázis sémaregisztrációs adatbázissal való létrehozásának utasításait.

  1. Hozzon létre egy contoso-sg nevű sémacsoportot a sémaregisztrációs portál használatával. Szerializálási típusként használja az Avro-t, a kompatibilitási módhoz Pedig Nincs .

  2. Ebben a sémacsoportban hozzon létre egy új Avro-sémát sémanévvel: Microsoft.Azure.Data.SchemaRegistry.example.Order a következő sématartalommal.

    {
      "namespace": "Microsoft.Azure.Data.SchemaRegistry.example",
      "type": "record",
      "name": "Order",
      "fields": [
        {
          "name": "id",
          "type": "string"
        },
        {
          "name": "amount",
          "type": "double"
        },
        {
          "name": "description",
          "type": "string"
        }
      ]
    } 
    

Alkalmazás regisztrálása a sémaregisztrációs adatbázis eléréséhez

A Microsoft Entra ID használatával engedélyezheti a Kafka-gyártó és a fogyasztói alkalmazás számára az Azure Schema Registry-erőforrások elérését úgy, hogy regisztrálja az ügyfélalkalmazást egy Microsoft Entra-bérlőnél az Azure Portalon.

Ha regisztrálni szeretne egy Microsoft Entra-alkalmazást, olvassa el example-app az alkalmazás regisztrálása Egy Microsoft Entra-bérlőnél című témakört.

  • tenant.id – az alkalmazás bérlőazonosítójának beállítása
  • client.id – beállítja az alkalmazás ügyfél-azonosítóját
  • client.secret – beállítja az ügyfél titkos kulcsát a hitelesítéshez

Ha pedig felügyelt identitást használ, a következőkre lesz szüksége:

  • use.managed.identity.credential – azt jelzi, hogy MSI-hitelesítő adatokat kell használni, msi-kompatibilis virtuális gépekhez kell használni
  • managed.identity.clientId – ha meg van adva, MSI-hitelesítő adatokat készít a megadott ügyfélazonosítóval
  • managed.identity.resourceId – ha meg van adva, MSI-hitelesítő adatokat készít a megadott erőforrás-azonosítóval

Felhasználó hozzáadása sémaregisztrációs adatbázis-olvasó szerepkörhöz

Adja hozzá a felhasználói fiókját a sémaregisztrációs adatbázis-olvasó szerepkörhöz a névtér szintjén. Használhatja a sémaregisztrációs adatbázis közreműködői szerepkörét is, de ehhez a rövid útmutatóhoz nem szükséges.

  1. Az Event Hubs Névtér lapján válassza a hozzáférés-vezérlést (IAM) a bal oldali menüben.
  2. A Hozzáférés-vezérlés (IAM) lapon válassza a + Hozzáadás –>Szerepkör-hozzárendelés hozzáadása lehetőséget a menüben.
  3. A Hozzárendelés típusa lapon válassza a Tovább gombot.
  4. A Szerepkörök lapon válassza a Sémaregisztrációs adatbázis olvasója (előzetes verzió) lehetőséget, majd a Lap alján válassza a Tovább gombot.
  5. A + Tagok kijelölése hivatkozás használatával adja hozzá az example-app előző lépésben létrehozott alkalmazást a szerepkörhöz, majd válassza a Tovább gombot.
  6. A Véleményezés + hozzárendelés lapon válassza a Véleményezés + hozzárendelés lehetőséget.

Kafka-alkalmazások ügyfélalkalmazás-konfigurációjának frissítése

Frissítenie kell a Kafka gyártói és fogyasztói alkalmazások ügyfélkonfigurációját az általunk létrehozott Microsoft Entra-alkalmazáshoz kapcsolódó konfigurációval és a sémaregisztrációs adatbázis adataival.

A Kafka Producer konfigurációjának frissítéséhez lépjen az azure-schema-registry-for-kafka/tree/master/java/avro/samples/kafka-producer webhelyre.

  1. Frissítse a Kafka-alkalmazás konfigurációját az src/main/resources/app.properties fájlban az Event Hubs kafka rövid útmutatójának követésével.

  2. Frissítse a gyártó konfigurációs adatait az src/main/resources/app.properties fájlban a sémaregisztrációs adatbázishoz kapcsolódó konfiguráció és a fent létrehozott Microsoft Entra-alkalmazás használatával az alábbiak szerint:

    schema.group=contoso-sg
    schema.registry.url=https://<NAMESPACENAME>.servicebus.windows.net
    
     tenant.id=<>
     client.id=<>
     client.secret=<>
    
  3. Kövesse ugyanazokat az utasításokat, és frissítse az azure-schema-registry-for-kafka/tree/master/java/avro/samples/kafka-consumer konfigurációt is.

  4. A Kafka gyártói és fogyasztói alkalmazásaihoz a következő Avro-sémát használjuk:

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

Kafka-gyártó használata Avro-sémaérvényesítéssel

A Kafka produceralkalmazás futtatásához lépjen az azure-schema-registry-for-kafka/tree/master/java/avro/samples/kafka-producer webhelyre.

  1. Futtathatja a gyártóalkalmazást, hogy Avro-specifikus rekordokat vagy általános rekordokat állíthass elő. Adott rekordmód esetén először a következő maven paranccsal kell létrehoznia az osztályokat a gyártó sémája alapján:

    mvn generate-sources
    
  2. Ezután az alábbi parancsokkal futtathatja a gyártóalkalmazást.

    mvn clean package
    mvn -e clean compile exec:java -Dexec.mainClass="com.azure.schemaregistry.samples.producer.App"
    
  3. A gyártói alkalmazás sikeres végrehajtása után a rendszer kéri, hogy válassza ki a gyártói forgatókönyvet. Ebben a rövid útmutatóban választhatja az 1. lehetőséget – Avro SpecificRecords létrehozása.

    Enter case number:
    1 - produce Avro SpecificRecords
    2 - produce Avro GenericRecords
    
  4. Sikeres adat szerializálás és közzététel esetén a következő konzolnaplóknak kell megjelennie a gyártói alkalmazásban:

    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"}
    

Kafka-fogyasztó használata Avro-sémaérvényesítéssel

A Kafka fogyasztói alkalmazás futtatásához lépjen az azure-schema-registry-for-kafka/tree/master/java/avro/samples/kafka-consumer webhelyre.

  1. A fogyasztói alkalmazást futtathatja úgy, hogy az Avro-specifikus rekordokat vagy általános rekordokat használjon. Adott rekordmód esetén először a következő maven paranccsal kell létrehoznia az osztályokat a gyártó sémája alapján:

    mvn generate-sources
    
  2. Ezután a következő paranccsal futtathatja a fogyasztói alkalmazást.

    mvn clean package
    mvn -e clean compile exec:java -Dexec.mainClass="com.azure.schemaregistry.samples.consumer.App"
    
  3. A fogyasztói alkalmazás sikeres végrehajtása után a rendszer kéri, hogy válassza ki a gyártói forgatókönyvet. Ebben a rövid útmutatóban választhatja az 1. lehetőséget – használja az Avro SpecificRecordst.

    Enter case number:
    1 - consume Avro SpecificRecords
    2 - consume Avro GenericRecords
    
  4. Sikeres adatfelhasználás és deszerializálás esetén a következő konzolnaplóknak kell megjelennie a gyártói alkalmazásban:

    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"}
    

Clean up resources

Törölje az Event Hubs névterét, vagy törölje a névteret tartalmazó erőforráscsoportot.