Aracılığıyla paylaş


Avro (Java) kullanarak Apache Kafka uygulamaları için şemaları doğrulama

Bu hızlı başlangıç kılavuzunda, Event Hubs için Azure Schema Registry kullanarak Apache Kafka uygulamalarından olayı doğrulamayı keşfedeceğiz.

Bu kullanım örneğinde Kafka üretici uygulaması Azure Schema Registry'de depolanan Avro şemasını kullanarak olayı seri hale getirip Azure Event Hubs'daki bir Kafka konusuna/olay hub'ına yayımlar. Kafka tüketicisi, Event Hubs'tan tükettiği olayları deserilize eder. Bunun için olayın şema kimliğini ve Azure Schema Registry'de depolanan Avro şemasını kullanır.

Avro şemasını kullanan Kafka uygulamaları için şema serileştirme/serileştirmeyi kaldırmayı gösteren diyagram.

Önkoşullar

Azure Event Hubs'da yeniyseniz bu hızlı başlangıcı gerçekleştirmeden önce event hubs'a genel bakış konusuna bakın.

Bu hızlı başlangıcı tamamlamak için aşağıdaki önkoşullara ihtiyacınız vardır:

Olay hub’ı oluşturma

Hızlı başlangıçtaki yönergeleri izleyerek bir Event Hubs ad alanı ve olay hub'ı oluşturun: Event Hubs ad alanı ve olay hub'ı oluşturma. Ardından, Event Hubs ad alanınıza bağlantı dizesi almak için Bağlantı dizesini alma başlığındaki yönergeleri izleyin.

Geçerli hızlı başlangıçta kullandığınız aşağıdaki ayarları not edin:

  • Event Hubs ad alanı için bağlantı dizesi
  • Olay hub'ının adı

Şema oluşturma

Şema grubu ve şema oluşturmak için Şema Kayıt Defteri'ni kullanarak şema oluşturma başlığındaki yönergeleri izleyin.

  1. Schema Registry portalını kullanarak contoso-sg adlı bir şema grubu oluşturun. Uyumluluk modu için serileştirme türü olarak Avro ve Yok kullanın.

  2. Bu şema grubunda, aşağıdaki şema içeriğini kullanarak şema adıyla Microsoft.Azure.Data.SchemaRegistry.example.Order yeni bir Avro şeması oluşturun.

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

Şema kayıt defterine erişmek için bir uygulama kaydetme

İstemci uygulamanızı Azure portalından bir Microsoft Entra kiracısına kaydederek Kafka üretici ve tüketici uygulamalarınıza Azure Schema Registry kaynaklarına erişme yetkisi vermek için Microsoft Entra ID kullanabilirsiniz.

example-app adında bir Microsoft Entra uygulamasını kaydetmek için bkz Uygulamanızı bir Microsoft Entra kiracısına kaydedin.

  • tenant.id - uygulamanın kiracı kimliğini ayarlar
  • client.id - uygulamanın istemci kimliğini ayarlar
  • client.secret - kimlik doğrulaması için istemci sırrını ayarlar

Yönetilen kimlik kullanıyorsanız şunları yapmanız gerekir:

  • use.managed.identity.credential - MSI kimlik bilgilerinin kullanılması gerektiğini, MSI özellikli VM için kullanılması gerektiğini gösterir
  • managed.identity.clientId - belirtilirse, verilen istemci kimliğiyle MSI kimlik bilgilerini oluşturur
  • managed.identity.resourceId - belirtilirse, belirtilen kaynak kimliğiyle MSI kimlik bilgilerini oluşturur

Şema Kayıt Defteri Okuyucusu rolüne kullanıcı ekleme

Kullanıcı hesabınızı ad alanı düzeyinde Şema Kayıt Defteri Okuyucusu rolüne ekleyin. Şema Kayıt Defteri Katkıda Bulunanı rolünü de kullanabilirsiniz, ancak bu hızlı başlangıç için gerekli değildir.

  1. Event Hubs ad alanı sayfasında, soldaki menüden Erişim denetimi (IAM) öğesini seçin.
  2. Erişim denetimi (IAM) sayfasında, menüde + Ekle ->Rol ataması ekle'yi seçin.
  3. Atama türü sayfasında İleri'yi seçin.
  4. Roller sayfasında Şema Kayıt Defteri Okuyucusu (Önizleme) öğesini ve ardından sayfanın alt kısmındaki İleri'yi seçin.
  5. Önceki adımda oluşturduğunuz uygulamayı role eklemek example-app için + Üye seç bağlantısını kullanın ve ardından İleri'yi seçin.
  6. Gözden geçir ve ata sayfasında Gözden geçir ve ata’yı seçin.

Kafka uygulamalarının istemci uygulama yapılandırmasını güncelleştirme

Kafka üretici ve tüketici uygulamalarının istemci yapılandırmasını, oluşturduğumuz Microsoft Entra uygulamasıyla ilgili yapılandırma ve şema kayıt defteri bilgileriyle güncelleştirmeniz gerekir.

Kafka Üretici yapılandırmasını güncelleştirmek için azure-schema-registry-for-kafka/tree/master/java/avro/samples/kafka-producer adresine gidin.

  1. Event Hubs için Kafka Hızlı Başlangıç kılavuzunu izleyerek src/main/resources/app.properties içindeki Kafka uygulamasının yapılandırmasını güncelleştirin.

  2. Şema kayıt defteriyle ilgili yapılandırmayı ve yukarıda oluşturduğunuz Microsoft Entra uygulamasını kullanarak src/main/resources/app.properties içindeki üreticinin yapılandırma ayrıntılarını aşağıdaki gibi güncelleştirin:

    schema.group=contoso-sg
    schema.registry.url=https://<NAMESPACENAME>.servicebus.windows.net
    
     tenant.id=<>
     client.id=<>
     client.secret=<>
    
  3. Aynı yönergeleri izleyin ve azure-schema-registry-for-kafka/tree/master/java/avro/samples/kafka-consumer yapılandırmasını da güncelleştirin.

  4. Hem Kafka üretici hem de tüketici uygulamaları için aşağıdaki Avro şeması kullanılır:

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

Avro şema doğrulaması ile Kafka üreticisini kullanma

Kafka üretici uygulamasını çalıştırmak için azure-schema-registry-for-kafka/tree/master/java/avro/samples/kafka-producer adresine gidin.

  1. Avro'ya özgü kayıtlar veya genel kayıtlar üretebilmesi için üretici uygulamasını çalıştırabilirsiniz. Belirli bir kayıt modu için önce aşağıdaki maven komutunu kullanarak üretici şemasına karşı sınıfları oluşturmanız gerekir:

    mvn generate-sources
    
  2. Ardından aşağıdaki komutları kullanarak üretici uygulamasını çalıştırabilirsiniz.

    mvn clean package
    mvn -e clean compile exec:java -Dexec.mainClass="com.azure.schemaregistry.samples.producer.App"
    
  3. Üretici uygulamasının başarıyla yürütülmesinden sonra, üretici senaryosunu seçmeniz istenir. Bu hızlı başlangıç için 1 seçeneğini belirleyebilirsiniz: Avro SpecificRecords üretin.

    Enter case number:
    1 - produce Avro SpecificRecords
    2 - produce Avro GenericRecords
    
  4. Başarılı veri serileştirme ve yayımlama sonrasında üretici uygulamanızda aşağıdaki konsol günlüklerini görmeniz gerekir:

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

Avro şema doğrulaması ile Kafka tüketicisi kullanma

Kafka tüketici uygulamasını çalıştırmak için azure-schema-registry-for-kafka/tree/master/java/avro/samples/kafka-consumer adresine gidin.

  1. Avro'ya özgü kayıtları veya genel kayıtları tüketmesi için tüketici uygulamasını çalıştırabilirsiniz. Belirli kayıtlar modu için önce aşağıdaki maven komutunu kullanarak üretici şemasına karşı sınıfları oluşturmanız gerekir.

    mvn generate-sources
    
  2. Ardından aşağıdaki komutu kullanarak tüketici uygulamasını çalıştırabilirsiniz.

    mvn clean package
    mvn -e clean compile exec:java -Dexec.mainClass="com.azure.schemaregistry.samples.consumer.App"
    
  3. Tüketici uygulamasının başarıyla yürütülmesinden sonra, üretici senaryosunu seçmeniz istenir. Bu hızlı başlangıç için 1 - Avro SpecificRecords kullanma seçeneğini belirleyebilirsiniz.

    Enter case number:
    1 - consume Avro SpecificRecords
    2 - consume Avro GenericRecords
    
  4. Başarılı veri tüketimi ve seri durumdan çıkarma işleminden sonra üretici uygulamanızda aşağıdaki konsol günlüklerini görmeniz gerekir:

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

Kaynakları temizleme

Event Hubs ad alanını silin veya ad alanını içeren kaynak grubunu silin.