Ćwiczenie — konfigurowanie aplikacji do wysyłania lub odbierania komunikatów za pośrednictwem centrum zdarzeń
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 .
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
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.
Uruchom następujące polecenie, aby uzyskać klucze dostępu skojarzone z kontem magazynu.
az storage account keys list --account-name $STORAGE_NAME
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.
Uruchom następujące polecenie, aby uzyskać parametry połączenia dla konta magazynu.
az storage account show-connection-string -n $STORAGE_NAME
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"
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.
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.
Przejdź do folderu SimpleSend.
cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend/src/main/java/com/microsoft/azure/eventhubs/samples/SimpleSend
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.
Jeśli jeszcze nie jest otwarty, otwórz SimpleSend.java , wybierając go z listy plików.
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.
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 .
Tworzenie pliku SimpleSend.java za pomocą narzędzia Maven
Teraz skompilujesz aplikację Java, uruchamiając polecenia mvn .
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
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Ę.
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.
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
Otwórz edytor usługi Cloud Shell.
code .
Wybierz plik EventProcessorSample.java w Eksploratorze plików po lewej stronie.
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
Zapisz plik EventProcessorSample.java za pomocą menu „...” lub klawisza skrótu (Ctrl+S w systemach Windows i Linux, Cmd+S w systemie macOS).
Zamknij Edytor.
Tworzenie pliku EventProcessorSample.java za pomocą narzędzia Maven
Przejdź do głównego folderu EventProcessorSample , uruchamiając następujące polecenie.
cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample
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Ę.
Uruchamianie aplikacji nadawcy i odbiorcy
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
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...
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
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ń.