Alıştırma - Uygulamaları olay hub'ı üzerinden ileti gönderecek veya alacak şekilde yapılandırma

Tamamlandı

Artık olay hub'ınız için yayımcı ve tüketici uygulamalarınızı yapılandırmaya hazırsınız.

Bu ünitede, uygulamaları olay hub'ınız üzerinden ileti gönderecek veya alacak şekilde yapılandıracaksınız. Bir uygulama ileti göndereni (SimpleSend), diğeri ileti alıcısı (EventProcessorSample) olarak davranır. Bu uygulamalar Java dilinde yazıldığından, tarayıcınızda tüm geliştirme, test ve yönetimi gerçekleştirebilirsiniz. Ancak, .NET gibi her platform için aynı yapılandırma kullanılmalıdır. Uygulamalar bir GitHub deposunda depolanır.

Genel amaçlı, standart depolama hesabı oluşturma

Java alıcı uygulaması, iletileri depolama hesabı gerektiren Azure Blob Depolama depolar. Depolama hesabı (genel amaçlı V2) oluşturmak için komutunu kullanın storage account create . Bu komut için aşağıdaki parametreleri tanımlarız:

Parametre Açıklama
name (gerekli) Depolama hesabınızın adı.
resource-group (gerekli) Kaynak grubu sahibi, zaten varsayılan değer olarak tanımlanmış olan korumalı alan kaynak grubudur.
konum (isteğe bağlı) Bölge zaten varsayılan değer olarak tanımlanmıştır, ancak varsayılan kaynak grubu konumundan farklı bir bölge ayarlamak istiyorsanız bu değeri ekleyebilirsiniz.
sku Depolama hesabının varsayılan SKU değeri Standard_RAGRS. Ancak bu alıştırmada bu değeri belirteceğiz.

Önceki alıştırmada kaynak grubu ve konum için varsayılan değerler tanımladık, bu nedenle bu parametreleri komutundan atlayabiliriz.

  1. Azure Cloud Shell'de depolama hesabı adını bir değişken olarak ayarlayın. Depolama hesabı adı Azure içinde benzersiz olmalı ve 3 ile 24 arasında sayı veya küçük harf içermelidir.

    STORAGE_NAME=storagename$RANDOM
    
  2. Depolama hesabını oluşturmak için aşağıdaki komutu çalıştırın.

    az storage account create --name $STORAGE_NAME --sku Standard_RAGRS --encryption-service blob
    

    Bahşiş

    Bu depolama hesabının oluşturulması biraz zaman alabilir. Depolama hesabı oluşturma işlemi başarısız olursa ortam değişkeninizi değiştirin ve yeniden deneyin.

  3. Depolama hesabınızla ilişkili erişim anahtarlarını almak için aşağıdaki komutu çalıştırın.

    az storage account keys list --account-name $STORAGE_NAME
    
  4. Depolama hesabınızla ilişkilendirilmiş iki anahtar JSON biçiminde çıkıştır. Key1 değerini kopyalayıp gelecekte kullanmak üzere kaydedin. Depolama hesabınıza erişmek için bu anahtara ihtiyacınız vardır.

  5. Depolama hesabınızın bağlantı dizesi almak için aşağıdaki komutu çalıştırın.

    az storage account show-connection-string -n $STORAGE_NAME
    
  6. Çıktı, depolama hesabınızın bağlantı ayrıntılarını içerir. connectionString değerini kopyalayıp kaydedin. Şuna benzer şekilde görünecektir:

    "DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName=storage_account_name;AccountKey=VZjXuMeuDqjCkT60xX6L5fmtXixYuY2wiPmsrXwYHIhwo736kSAUAj08XBockRZh7CZwYxuYBPe31hi8XfHlWw=="
    
  7. Depolama hesabınızda iletiler adlı bir kapsayıcı oluşturmak için aşağıdaki komutu çalıştırın. Önceki adımda kopyaladığınız connectionString değerini kullanın.

    az storage container create --name messages --connection-string "<connection string here>"
    

Olay hub'ları GitHub deposunu kopyalama

Cloud Shell'de event hubs GitHub deposunu ile gitkopyalayın. Bu ünitede derlediğiniz uygulamaların kaynak dosyaları bir GitHub deposunda bulunur.

  1. Cloud Shell'de ana dizininizde olduğunuzdan emin olmak ve ardından bu depoyu kopyalamak için aşağıdaki komutları çalıştırın.

    cd ~
    git clone https://github.com/Azure/azure-event-hubs.git
    

Depo giriş klasörünüze kopyalanır.

SimpleSend.java dosyasını düzenleme

Bu alıştırmada, SimpleSend uygulamasını değiştirmek için yerleşik Cloud Shell düzenleyicisini kullanacaksınız. Event Hubs ad alanınızı, olay hub'ı adınızı, paylaşılan erişim ilkesi adınızı ve birincil anahtarınızı eklemeniz gerekir.

  1. SimpleSend klasörüne geçin.

    cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend/src/main/java/com/microsoft/azure/eventhubs/samples/SimpleSend
    
  2. Geçerli klasörde Cloud Shell düzenleyicisini açın.

    code .
    

    Geçerli klasördeki dosyalar sol taraftaki menüde listelenir ve sağ taraftaki düzenleyici alanı, başlık çubuğunda listelenen dosya adının içeriğini görüntüler.

  3. Henüz açık değilse, dosya listesinden seçerek SimpleSend.java dosyasını açın.

  4. Düzenleyicide, 'Bağlan ionStringBuilder'' altında aşağıdaki dizeleri bulun ve değiştirin:

    • "Your Event Hubs namespace name" yerine Event Hubs ad alanını yazın.
    • "Your Event Hub" yerine olay hub'ınızın adını yazın.
    • "Your policy name" yerine RootManageSharedAccessKey değerini yazın.
    • "Your primary SAS key" yerine önceden kaydettiğiniz Event Hubs ad alanının primaryKey anahtarının değerini yazın.

    Bu değerleri unutursanız, düzenleyicinin altındaki terminal penceresine geçebilir ve komutunu çalıştırarak ortam değişkenlerini listeleyebilirsiniz echo . Örneğin:

    echo $NS_NAME
    echo $HUB_NAME
    echo $STORAGE_NAME
    

    Birincil SAS anahtarınız için, bir Event Hubs ad alanı oluşturduğunuzda RootManageSharedAccessKey adlı 256 bit SAS anahtarı oluşturulur ve ad alanı için gönderme, dinleme ve yönetme hakları veren birincil ve ikincil anahtarları içerir. Bu alıştırmanın önceki bölümlerinde bir Azure CLI komutu çalıştırarak anahtarı elde ettiniz; ancak Anahtarları ve bağlantı dizesi azure portalında Event Hubs ad alanınızı seçerek de bulabilirsiniz ve ardından Ayarlar altındaki menüde Paylaşılan erişim ilkeleri'ni seçin; şimdi SAS İlkesi anahtarlarını görüntülemek için RootManageSharedAccessKey ilke adını seçin.

  5. SimpleSend.java dosyasını kaydedin ve düzenleyiciyi kapatın.

    Bahşiş

    Düzenlemelerinizi kaydetmek için Ctrl+S tuşlarını kullanın. Windows ve Linux'ta Ctrl+X tuşlarına veya macOS'ta Cmd+S tuşlarına basarak düzenleyiciden çıkın. Cloud Shell terminal penceresinden farklı olarak Cloud Shell düzenleyicisi işletim sisteminiz için tipik kopyalama/yapıştırma klavye hızlandırıcısı tuşlarını kullanır. Alternatif olarak, ek düzenleme komutları için sağ üst köşedeki üç noktayı (...) seçerek düzenleyici menüsünü açın.

Maven ile SimpleSend.java dosyasını derleme

Şimdi mvn komutlarını çalıştırarak Java uygulamasını derleyin.

  1. Cloud Shell'de aşağıdaki komutu girerek main SimpleSend klasörüne gidin.

    cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend
    
  2. Java SimpleSend uygulamasını derleyin. Bu komut, olay hub'ınızın bağlantı ayrıntılarını kullanarak uygulamanızı oluşturur.

    mvn clean package -DskipTests
    

    Derleme işleminin tamamlanması birkaç dakika sürebilir. Devam etmeden önce [INFO] BUILD SUCCESS (Bilgi: Derleme başarılı) iletisini gördüğünüzden emin olun.

    Build results for sender application.

EventProcessorSample.java dosyasını düzenleme

Artık olay hub'ınızdan veri almak için bir alıcı (abone veya tüketici olarak da bilinir) uygulaması yapılandıracaksınız.

Alıcı uygulaması için iki sınıf kullanılabilir: EventHubReceiver ve EventProcessorHost. EventProcessorHost, EventHubReceiver üzerine kurulmuştur, ancak EventHubReceiver'dan daha basit bir program arabirimi sağlar. EventProcessorHost, aynı depolama hesabını kullanarak ileti bölümlerini birden fazla EventProcessorHost örneğine otomatik olarak dağıtabilir.

Bu yordamda yöntemini kullanırsınız EventProcessorHost . EventProcessorSample uygulamasını şu değerleri eklemek için düzenlersiniz: Event Hubs ad alanınız, olay hub'ı adınız, paylaşılan erişim ilkesi adınız ve birincil anahtarınız, depolama hesabı adınız, bağlantı dizesi ve kapsayıcı adınız.

  1. Aşağıdaki komutu çalıştırarak EventProcessorSample klasörüne geçin.

    cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample/src/main/java/com/microsoft/azure/eventhubs/samples/eventprocessorsample
    
  2. Cloud Shell düzenleyicisini açın.

    code .
    
  3. EventProcessorSample.java dosyasını seçin.

  4. Düzenleyicide aşağıdaki dizeleri bulun ve değiştirin:

    • ----EventHubNamespaceName---- yerine Event Hubs ad alanını yazın.
    • ----EventHubName---- yerine olay hub'ınızın adını yazın.
    • ----SharedAccessSignatureKeyName---- yerine RootManageSharedAccessKey değerini yazın.
    • ----SharedAccessSignatureKey---- yerine önceden kaydettiğiniz Event Hubs ad alanının primaryKey anahtarının değerini yazın.
    • ----AzureStorageConnectionString---- yerine önceden kaydettiğiniz depolama hesabı dizesini yazın.
    • ----StorageContainerName---- yerine messages yazın.
    • ----HostNamePrefix---- yerine depolama hesabınızın adını yazın.
  5. EventProcessorSample.java dosyasını "..." menüsü üzerinden veya kısayol tuşunu (Windows ve Linux için Ctrl+S, macOS için Cmd+S) kullanarak kaydedin.

  6. Düzenleyiciyi kapatın.

Maven ile EventProcessorSample.java dosyasını derleme

  1. Aşağıdaki komutu çalıştırarak main EventProcessorSample klasörüne geçin.

    cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample
    
  2. Uygulamanızın olay hub'ınız için bağlantı ayrıntılarını kullandığından emin olmak için aşağıdaki komutu çalıştırarak Java SimpleSend uygulamasını oluşturun.

    mvn clean package -DskipTests
    

    Derleme işleminin tamamlanması birkaç dakika sürebilir. Devam etmeden önce [INFO] BUILD SUCCESS (Bilgi: Derleme başarılı) iletisini gördüğünüzden emin olun.

    Build results for receiver application.

Gönderen ve alıcı uygulamalarını başlatma

  1. Aşağıdaki java komutu çalıştırarak ve bir .jar paketi belirterek komut satırından Java uygulamasını çalıştırın. Aşağıdaki komutları çalıştırarak SimpleSend uygulamasını başlatın.

    cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend
    java -jar ./target/simplesend-1.0.0-jar-with-dependencies.jar
    
  2. Gönderme Tamamlandı... ifadesini gördüğünüzde Enter tuşuna basın.

    jar-with-dependencies.jar
    SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
    SLF4J: Defaulting to no-operation (NOP) logger implementation
    SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
    2018-09-18T19:42:15.146Z: Send Complete...
    
  3. Aşağıdaki komutu çalıştırarak EventProcessorSample uygulamasını başlatın.

    cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample
    java -jar ./target/eventprocessorsample-1.0.0-jar-with-dependencies.jar
    
  4. konsolda iletiler görünmeye başladığında Enter tuşuna basın veya programı sonlandırmak için CTRL+C tuşlarına basın.

    ...
    SAMPLE: Partition 0 checkpointing at 1064,19
    SAMPLE (3,1120,20): "Message 80"
    SAMPLE (3,1176,21): "Message 84"
    SAMPLE (3,1232,22): "Message 88"
    SAMPLE (3,1288,23): "Message 92"
    SAMPLE (3,1344,24): "Message 96"
    SAMPLE: Partition 3 checkpointing at 1344,24
    SAMPLE (2,1120,20): "Message 83"
    SAMPLE (2,1176,21): "Message 87"
    SAMPLE (2,1232,22): "Message 91"
    SAMPLE (2,1288,23): "Message 95"
    SAMPLE (2,1344,24): "Message 99"
    SAMPLE: Partition 2 checkpointing at 1344,24
    SAMPLE: Partition 1 batch size was 3 for host mystorageacct2018-46d60a17-7060-4b53-b0e0-cca70c970a47
    SAMPLE (0,1120,20): "Message 81"
    SAMPLE (0,1176,21): "Message 85"
    SAMPLE: Partition 0 batch size was 10 for host mystorageacct2018-46d60a17-7060-4b53-b0e0-cca70c970a47
    SAMPLE: Partition 0 got event batch
    SAMPLE (0,1232,22): "Message 89"
    SAMPLE (0,1288,23): "Message 93"
    SAMPLE (0,1344,24): "Message 97"
    SAMPLE: Partition 0 checkpointing at 1344,24
    SAMPLE: Partition 3 batch size was 8 for host mystorageacct2018-46d60a17-7060-4b53-b0e0-cca70c970a47
    SAMPLE: Partition 2 batch size was 9 for host mystorageacct2018-46d60a17-7060-4b53-b0e0-cca70c970a47
    SAMPLE: Partition 0 batch size was 3 for host mystorageacct2018-46d60a17-7060-4b53-b0e0-cca70c970a47
    

Özet

Bu ünitede, olay hub'ınıza ileti göndermeye hazır bir gönderen uygulaması yapılandırmıştınız. Ayrıca olay hub'ınızdan ileti almaya hazır bir alıcı uygulaması yapılandırmışsınız.