Ć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). 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 chwilę potrwać. 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

Pliki źródłowe aplikacji, które tworzysz w tej lekcji, znajdują się w repozytorium GitHub.

  1. Uruchom narzędzie GitBash na komputerze.

  2. Uruchom następujące polecenie, aby sklonować rozwiązanie projektu Git:

    cd ~
    git clone https://github.com/Azure/azure-event-hubs.git
    
  3. Uruchom program VS Code na komputerze.

Edytuj SimpleSend.java, aby wysyłać zdarzenia do centrum zdarzeń

W tym ćwiczeniu zmodyfikujesz aplikację SimpleSend przy użyciu programu Visual Studio Code (VS Code). Musisz dodać przestrzeń nazw usługi Event Hubs, nazwę centrum zdarzeń, nazwę zasad dostępu współdzielonego i klucz podstawowy.

  1. Uruchom program VS Code.

  2. Wybierz Plik —>Otwórz folderi wybierz folder SimpleSend w folderze c:/users/USERID/azure-event-hubs/samples/java/basic.

  3. W Eksploratorze Kodów w lewym panelu rozwiń węzeł src, a następnie dwukrotnie kliknij SimpleSend.java, aby otworzyć go w edytorze.

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

    • <EVENT HUBS NAMESPACE - CONNECTION STRING> z parametrami połączenia z przestrzenią nazw usługi Event Hubs.
    • <EVENT HUB NAME> na nazwę Twojego centrum zdarzeń.

    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.

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

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

  1. W Eksploratorze kodu kliknij prawym przyciskiem myszy SimpleSend.javai wybierz pozycję Otwórz w zintegrowanym terminalu.

  2. Wprowadź następujące polecenie, aby przejść do głównego folderu SimpleSend.

    cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend
    
  3. 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 EventProcessorSample.java odbierających zdarzenia do centrum zdarzeń

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

W przypadku aplikacji odbiorcy dostępne są dwie klasy: EventHubReceiver i EventProcessorClient. Element EventProcessorClient jest oparty na usłudze EventHubReceiver, ale zapewnia prostszy interfejs programowy niż EventHubReceiver. EventProcessorClient może automatycznie dystrybuować partycje komunikatów w wielu wystąpieniach klasy EventProcessorClient przy użyciu tego samego konta magazynu.

W tej procedurze użyjesz EventProcessorClient 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. Uruchom kolejną instancję VS Code.

  2. Wybierz Plik ->Otwórz folder, a następnie wybierz folder EventProcessorSample w katalogu c:/users/USERID/azure-event-hubs/samples/java/basic.

  3. W Eksploratorze kodu w lewym panelu rozwiń src, a następnie kliknij dwukrotnie EventProcessorSample.java, aby otworzyć go w edytorze.

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

    • <EVENT HUBS NAMESPACE - CONNECTION STRING> — ciąg połączenia z przestrzenią nazw Event Hubs.
    • <EVENT HUB NAME> — nazwa centrum zdarzeń.
    • <AZURE STORAGE - CONNECTION STRING> — parametry połączenia z kontem usługi Azure Storage.
    • Upewnij się, że nazwa kontenera blob to komunikaty. Jeśli używasz innej nazwy kontenera, użyj tej nazwy.
  5. Zapisz EventProcessorSample.java.

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

  1. W Eksploratorze kodu kliknij prawym przyciskiem myszy EventProcessorSample.javai wybierz pozycję Otwórz w zintegrowanym terminalu.

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

    cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample
    
  3. 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ę 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
    
  2. Powinny zostać wyświetlone następujące dane wyjściowe z aplikacji odbiorcy:

    Starting event processor
    Press enter to stop.
    
  3. Przejdź do okna programu VS Code z otwartym kodem aplikacji wysyłającej (SimpleSend). W zintegrowanym terminalu uruchom aplikację Java z wiersza polecenia, uruchamiając następujące polecenie java i określając pakiet .jar.

    cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend
    java -jar ./target/simplesend-1.0.0-jar-with-dependencies.jar
    
  4. Po wyświetleniu komunikatu Wysyłanie zakończone...wprowadź lub CTRL+C, aby zatrzymać aplikację.

    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...
    
  5. W programie VS Code z uruchomioną aplikacją odbiorcy sprawdź, czy są wyświetlane komunikaty. Naciśnij Enter lub naciśnij CTRL+C, aby zakończyć program.

    ...
    Starting event processor
    Press enter to stop.
    Processing event from partition 0 with sequence number 1 with body: Message 0
    Processing event from partition 0 with sequence number 2 with body: Message 1
    Processing event from partition 0 with sequence number 3 with body: Message 2
    Processing event from partition 0 with sequence number 4 with body: Message 3
    Processing event from partition 0 with sequence number 5 with body: Message 4
    

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