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.
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:
- Ha nem rendelkezik Azure-előfizetéssel, első lépésként mindössze néhány perc alatt létrehozhat egy ingyenes fiókot.
- A fejlesztési környezetben telepítse a következő összetevőket:
- Java fejlesztői készlet (JDK) 1.7+.
- Egy letöltött és telepített Maven bináris archívum.
- Git
- Klónozza az Azure Schema Registry for Kafka-adattárat .
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.
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 .
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.
- Az Event Hubs Névtér lapján válassza a hozzáférés-vezérlést (IAM) a bal oldali menüben.
- 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.
- A Hozzárendelés típusa lapon válassza a Tovább gombot.
- 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.
- 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. - 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.
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.
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=<>
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.
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.
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
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"
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
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.
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
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"
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
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.