Ćwiczenie — konfigurowanie aplikacji do wysyłania lub odbierania komunikatów za pośrednictwem centrum zdarzeń

Ukończone

Teraz możesz przystąpić do konfigurowania aplikacji wydawcy i klientów dla centrum zdarzeń.

W tej lekcji skonfigurujesz aplikacje do wysyłania lub odbierania komunikatów za pośrednictwem centrum zdarzeń. Jedna aplikacja działa jako nadawca komunikatów (SimpleSend), drugi jako odbiornik komunikatów (EventProcessorSample). Ponieważ te aplikacje są napisane w języku Java, możesz wykonywać wszystkie zadania programowe, testowe i zarządzania w przeglądarce. Jednak ta sama konfiguracja musi być używana dla każdej platformy, takiej jak .NET. Aplikacje są przechowywane w repozytorium GitHub.

Tworzenie standardowego konta magazynu ogólnego przeznaczenia

Aplikacja odbiorcy Java przechowuje komunikaty w usłudze Azure Blob Storage, co wymaga konta magazynu. Aby utworzyć konto magazynu (ogólnego przeznaczenia w wersji 2), użyj storage account create polecenia . Definiujemy następujące parametry dla tego polecenia:

Parametr Opis
name (wymagane) Nazwa konta magazynu.
grupa zasobów (wymagana) Właściciel grupy zasobów jest grupą zasobów piaskownicy, która jest już zdefiniowana jako wartość domyślna.
lokalizacja (opcjonalnie) Region jest już zdefiniowany jako wartość domyślna, ale możesz go uwzględnić, jeśli chcesz ustawić inny region od domyślnej lokalizacji grupy zasobów.
sku Domyślna wartość jednostki SKU konta magazynu to Standard_RAGRS. Jednak w tym ćwiczeniu określamy tę wartość.

W poprzednim ćwiczeniu zdefiniowaliśmy wartości domyślne dla grupy zasobów i lokalizacji, abyśmy mogli pominąć te parametry z polecenia .

  1. W usłudze Azure Cloud Shell ustaw nazwę konta magazynu na zmienną. Nazwa konta magazynu musi być unikatowa na platformie Azure i musi zawierać od 3 do 24 cyfr lub małych liter.

    STORAGE_NAME=storagename$RANDOM
    
  2. Uruchom następujące polecenie, aby utworzyć konto magazynu.

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

    Napiwek

    Utworzenie tego konta magazynu może zająć trochę czasu. Jeśli tworzenie konta magazynu zakończy się niepowodzeniem, zmień zmienną środowiskową i spróbuj ponownie.

  3. Uruchom następujące polecenie, aby uzyskać klucze dostępu skojarzone z kontem magazynu.

    az storage account keys list --account-name $STORAGE_NAME
    
  4. Dwa klucze skojarzone z kontem magazynu są danymi wyjściowymi w formacie JSON. Skopiuj i zapisz wartość klucza key1 do użycia w przyszłości. Ten klucz jest potrzebny do uzyskania dostępu do konta magazynu.

  5. Uruchom następujące polecenie, aby uzyskać parametry połączenia dla konta magazynu.

    az storage account show-connection-string -n $STORAGE_NAME
    
  6. Dane wyjściowe zawierają szczegóły połączenia dla konta magazynu. Skopiuj i zapisz wartość connectionString. Powinna to wyglądać następująco:

    "DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName=storage_account_name;AccountKey=xxxxxxxxxxx"
    
  7. Uruchom następujące polecenie, aby utworzyć kontener o nazwie messages na koncie magazynu. Użyj wartości connectionString skopiowaną w poprzednim kroku.

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

Klonowanie repozytorium GitHub usługi Event Hubs

W usłudze Cloud Shell sklonuj repozytorium GitHub usługi Event Hubs za pomocą polecenia git. Pliki źródłowe aplikacji, które tworzysz w tej lekcji, znajdują się w repozytorium GitHub.

  1. Uruchom następujące polecenia, aby upewnić się, że znajdujesz się w katalogu głównym w usłudze Cloud Shell, a następnie sklonuj to repozytorium.

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

Repozytorium jest klonowane do Twojego folderu głównego.

Edytowanie pliku SimpleSend.java

W tym ćwiczeniu użyjesz wbudowanego edytora usługi Cloud Shell, aby zmodyfikować aplikację SimpleSend. Musisz dodać przestrzeń nazw usługi Event Hubs, nazwę centrum zdarzeń, nazwę zasad dostępu współdzielonego i klucz podstawowy.

  1. Przejdź do folderu SimpleSend.

    cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend/src/main/java/com/microsoft/azure/eventhubs/samples/SimpleSend
    
  2. Otwórz edytor usługi Cloud Shell w bieżącym folderze.

    code .
    

    Pliki w bieżącym folderze są wyświetlane w menu po lewej stronie, a obszar edytora po prawej stronie wyświetla zawartość nazwy pliku wymienionego na pasku tytułu.

  3. Jeśli jeszcze nie jest otwarty, otwórz SimpleSend.java , wybierając go z listy plików.

  4. W edytorze znajdź i zastąp następujące ciągi w obszarze "ConnectionStringBuilder":

    • "Your Event Hubs namespace name" na nazwę Twojej przestrzeni nazw usługi Event Hubs.
    • "Your Event Hub" na nazwę Twojego centrum zdarzeń.
    • "Your policy name" na wartość RootManageSharedAccessKey.
    • "Your primary SAS key" na wartość klucza primaryKey dla Twojej przestrzeni nazw usługi Event Hubs, która została zapisana wcześniej.

    Jeśli zapomnisz te wartości, możesz przełączyć się do okna terminalu poniżej edytora i uruchomić echo polecenie , aby wyświetlić listę zmiennych środowiskowych. Na przykład:

    echo $NS_NAME
    echo $HUB_NAME
    echo $STORAGE_NAME
    

    W przypadku podstawowego klucza sygnatury dostępu współdzielonego podczas tworzenia przestrzeni nazw usługi Event Hubs jest tworzony 256-bitowy klucz SAS o nazwie RootManageSharedAccessKey i zawiera klucze podstawowe i pomocnicze, które udzielają uprawnień do wysyłania, nasłuchiwania i zarządzania prawami do przestrzeni nazw. Wcześniej w tym ćwiczeniu został uzyskany klucz, uruchamiając polecenie interfejsu wiersza polecenia platformy Azure; Można jednak również znaleźć klucze i parametry połączenia, wybierając przestrzeń nazw usługi Event Hubs w witrynie Azure Portal, a następnie w menu w obszarze Ustawienia wybierz pozycję Zasady dostępu współdzielonego. Teraz wybierz nazwę zasad RootManageSharedAccessKey, aby wyświetlić klucze zasad sygnatury dostępu współdzielonego.

  5. Zapisz plik SimpleSend.java, a następnie zamknij edytor. Wybierz w prawym górnym rogu edytora i użyj elementów menu Zapisz i Zamknij edytor .

    Zrzut ekranu przedstawiający elementy menu w celu zapisania pliku i zamknięcia edytora.

Tworzenie pliku SimpleSend.java za pomocą narzędzia Maven

Teraz skompilujesz aplikację Java, uruchamiając polecenia mvn .

  1. W usłudze Cloud Shell wprowadź następujące polecenie, aby przejść do głównego folderu SimpleSend .

    cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend
    
  2. Skompiluj aplikację Java SimpleSend. To polecenie kompiluje aplikację przy użyciu szczegółów połączenia centrum zdarzeń.

    mvn clean package -DskipTests
    

    Proces kompilacji może potrwać kilka minut. Zanim przejdziesz dalej, upewnij się, że jest wyświetlany komunikat [INFO] BUDOWANIE POWIODŁO SIĘ.

    Wyniki kompilacji dla aplikacji nadawcy.

Edytowanie pliku EventProcessorSample.java

Teraz skonfigurujesz aplikację odbiorcy (znaną również jako subskrybent lub odbiorca) w celu pozyskiwania danych z centrum zdarzeń.

Dla aplikacji odbiorcy dostępne są dwie klasy: EventHubReceiver i EventProcessorHost. Klasa EventProcessorHost jest oparta na usłudze EventHubReceiver, ale zapewnia prostszy interfejs programowy niż EventHubReceiver. Klasa EventProcessorHost umożliwia automatyczne rozpowszechnianie partycji komunikatów do wielu wystąpień klasy EventProcessorHost przy użyciu tego samego konta magazynu.

W tej procedurze użyjesz EventProcessorHost metody . Edytujesz aplikację EventProcessorSample, aby dodać następujące wartości: Przestrzeń nazw usługi Event Hubs, nazwa centrum zdarzeń, nazwa zasad dostępu współdzielonego i klucz podstawowy, nazwa konta magazynu, parametry połączenia i nazwa kontenera.

  1. Przejdź do folderu EventProcessorSample , uruchamiając następujące polecenie.

    cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample/src/main/java/com/microsoft/azure/eventhubs/samples/eventprocessorsample
    
  2. Otwórz edytor usługi Cloud Shell.

    code .
    
  3. Wybierz plik EventProcessorSample.java w Eksploratorze plików po lewej stronie.

  4. Znajdź i zamień następujące ciągi w edytorze:

    • ----EventHubNamespaceName---- na nazwę Twojej przestrzeni nazw usługi Event Hubs.
    • ----EventHubName---- na nazwę Twojego centrum zdarzeń.
    • ----SharedAccessSignatureKeyName---- na wartość RootManageSharedAccessKey.
    • ----SharedAccessSignatureKey---- na wartość klucza primaryKey dla Twojej przestrzeni nazw usługi Event Hubs, która została zapisana wcześniej.
    • ----AzureStorageConnectionString---- na parametry połączenia konta magazynu, które zostały zapisane wcześniej.
    • ----StorageContainerName---- na komunikaty.
    • ----HostNamePrefix---- na nazwę konta magazynu.

    Jeśli zapomnisz te wartości, możesz przełączyć się do okna terminalu poniżej edytora i uruchomić echo polecenie , aby wyświetlić listę zmiennych środowiskowych. Na przykład:

    echo $NS_NAME
    echo $HUB_NAME
    echo $STORAGE_NAME
    
  5. Zapisz plik EventProcessorSample.java za pomocą menu „...” lub klawisza skrótu (Ctrl+S w systemach Windows i Linux, Cmd+S w systemie macOS).

  6. Zamknij Edytor.

Tworzenie pliku EventProcessorSample.java za pomocą narzędzia Maven

  1. Przejdź do głównego folderu EventProcessorSample , uruchamiając następujące polecenie.

    cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample
    
  2. Skompiluj aplikację Java SimpleSend, uruchamiając następujące polecenie, aby upewnić się, że aplikacja używa szczegółów połączenia dla centrum zdarzeń.

    mvn clean package -DskipTests
    

    Proces kompilacji może potrwać kilka minut. Zanim przejdziesz dalej, upewnij się, że jest wyświetlany komunikat [INFO] BUDOWANIE POWIODŁO SIĘ.

    Wyniki kompilacji dla aplikacji odbiorcy.

Uruchamianie aplikacji nadawcy i odbiorcy

  1. Uruchom aplikację Java z wiersza polecenia, uruchamiając następujące java polecenie i określając pakiet .jar. Aby uruchomić aplikację SimpleSend, wykonaj następujące polecenia.

    cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend
    java -jar ./target/simplesend-1.0.0-jar-with-dependencies.jar
    
  2. Po wyświetleniu komunikatu Wysyłanie zakończone naciśnij klawisz Enter.

    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. Uruchom aplikację EventProcessorSample, uruchamiając następujące polecenie.

    cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample
    java -jar ./target/eventprocessorsample-1.0.0-jar-with-dependencies.jar
    
  4. Gdy komunikaty przestaną pojawiać się w konsoli, naciśnij Enter lub naciśnij CTRL+C , aby zakończyć program.

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

Podsumowanie

W tej lekcji skonfigurowano aplikację nadawcy gotową do wysyłania komunikatów do centrum zdarzeń. Skonfigurowano również aplikację odbiorcy gotową do odbierania komunikatów z centrum zdarzeń.