Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym szybkim starcie wykonujesz dostarczanie za pomocą pobierania, używając polecenia powłoki bash do publikowania, odbierania i potwierdzania zdarzeń. Użyj poleceń interfejsu wiersza polecenia platformy Azure, aby utworzyć zasoby usługi Azure Event Grid. Ten artykuł jest odpowiedni do szybkiego testu funkcjonalności dostarczania pull.
Przykładowy kod korzystający z zestawów SDK płaszczyzny danych można znaleźć w następujących zasobach:
- .NET: Wysyłanie i odbieranie wiadomości z tematu obszaru nazw usługi Azure Event Grid (.NET)
- Java: publikowanie zdarzeń w tematach przestrzeni nazw przy użyciu języka Java
- Java: Odbieraj zdarzenia za pomocą dostarczania do odbioru używając Java
Aby uzyskać więcej informacji na temat modelu dostarczania pull, zobacz Pojęcia dotyczące przestrzeni nazw usługi Azure Event Grid i Dostarczanie pull za pomocą protokołu HTTP.
Jeśli nie masz jeszcze konta platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
Wymagania wstępne
Użyj środowiska Bash w Azure Cloud Shell. Aby uzyskać więcej informacji, zobacz Get started with Azure Cloud Shell.
Jeśli wolisz uruchamiać polecenia referencyjne interfejsu wiersza polecenia lokalnie, zainstaluj Azure CLI. Jeśli korzystasz z systemu Windows lub macOS, rozważ uruchomienie Azure CLI w kontenerze Docker. Aby uzyskać więcej informacji, zobacz Jak uruchomić Azure CLI w kontenerze Docker.
Jeśli korzystasz z instalacji lokalnej, zaloguj się do Azure CLI za pomocą polecenia az login. Aby zakończyć proces uwierzytelniania, wykonaj kroki wyświetlane na Twoim terminalu. Aby uzyskać inne opcje logowania, zobacz Uwierzytelnianie na platformie Azure przy użyciu interfejsu wiersza polecenia platformy Azure.
Gdy zostaniesz o to poproszony/a, zainstaluj rozszerzenie Azure CLI przy pierwszym użyciu. Aby uzyskać więcej informacji na temat rozszerzeń, zobacz Używanie rozszerzeń i zarządzanie nimi za pomocą interfejsu wiersza polecenia platformy Azure.
Uruchom az version, aby sprawdzić zainstalowaną wersję i biblioteki zależne. Aby zaktualizować do najnowszej wersji, uruchom az upgrade.
- Ten artykuł wymaga wersji 2.0.70 lub nowszej interfejsu wiersza polecenia platformy Azure. Jeśli używasz usługi Azure Cloud Shell, najnowsza wersja jest już zainstalowana.
Tworzenie grupy zasobów
Grupę zasobów platformy Azure można utworzyć za pomocą polecenia az group create. Użyj tej grupy zasobów, aby zawierać wszystkie zasoby utworzone w tym artykule.
Ogólne kroki używania usługi Cloud Shell do uruchamiania poleceń to:
- Wybierz pozycję Otwórz usługę Cloud Shell , aby wyświetlić okno usługi Azure Cloud Shell w okienku po prawej stronie.
- Skopiuj polecenie i wklej je w oknie usługi Azure Cloud Shell.
- Naciśnij ENTER, aby uruchomić polecenie .
Zadeklaruj zmienną do przechowywania nazwy grupy zasobów platformy Azure. Określ nazwę grupy zasobów, zastępując
<your-resource-group-name>swoją wartością.resource_group="<your-resource-group-name>"Utwórz grupę zasobów. Możesz zmienić lokalizację na dowolną lokalizację platformy Azure.
az group create --name $resource_group --location eastus
Włączanie dostawcy zasobów usługi Event Grid
Jeśli po raz pierwszy używasz usługi Event Grid w ramach subskrypcji platformy Azure, może być konieczne zarejestrowanie dostawcy zasobów usługi Event Grid. Uruchom następujące polecenie, aby zarejestrować dostawcę:
az provider register --namespace Microsoft.EventGridUkończenie rejestracji może zająć trochę czasu. Aby sprawdzić stan, uruchom następujące polecenie:
az provider show --namespace Microsoft.EventGrid --query "registrationState"Gdy właściwość
registrationStateuzyska wartośćRegistered, można kontynuować.
Tworzenie przestrzeni nazw
Przestrzeń nazw usługi Event Grid udostępnia zdefiniowany przez użytkownika punkt końcowy, do którego są ogłaszane zdarzenia. Poniższy przykład tworzy przestrzeń nazw w grupie zasobów przy użyciu powłoki Bash w usłudze Azure Cloud Shell. Nazwa przestrzeni nazw musi być unikatowa, ponieważ jest częścią wpisu systemu nazw domen (DNS). Nazwa przestrzeni nazw powinna spełniać następujące reguły:
- Powinna zawierać się od 3 do 50 znaków.
- Powinna być unikatowa w regionie.
- Dozwolone są tylko znaki: a-z, A-Z, 0-9 i -
- Nie należy rozpoczynać od zarezerwowanych prefiksów słów kluczowych, takich jak
Microsoft,SystemlubEventGrid.
Zadeklaruj zmienną do przechowywania nazwy przestrzeni nazw usługi Event Grid. Określ nazwę przestrzeni nazw, zastępując
<your-namespace-name>ciąg wartością .namespace="<your-namespace-name>"Tworzenie przestrzeni nazw. Możesz zmienić lokalizację, w której ją wdrożysz.
az eventgrid namespace create --resource-group $resource_group --name $namespace --location eastus
Tworzenie tematu przestrzeni nazw
Utwórz temat zawierający wszystkie zdarzenia opublikowane w punkcie końcowym przestrzeni nazw.
Zadeklaruj zmienną do przechowywania nazwy tematu przestrzeni nazw. Określ nazwę tematu przestrzeni nazw, zastępując
<your-topic-name>swoją wartością.topic="<your-topic-name>"Utwórz temat przestrzeni nazw:
az eventgrid namespace topic create --resource-group $resource_group --name $topic --namespace-name $namespace
Tworzenie subskrypcji zdarzeń
Utwórz subskrypcję zdarzeń, ustawiając tryb dostarczania na kolejkę, która obsługuje dostawę typu pull. Aby uzyskać więcej informacji na temat wszystkich opcji konfiguracji, zobacz Interfejs API REST usługi Azure Event Grid.
Zadeklaruj zmienną do przechowywania nazwy subskrypcji wydarzeń dla tematu w przestrzeni nazw. Określ nazwę subskrypcji zdarzeń, zastępując
<your-event-subscription-name>twoją wartością.event_subscription="<your-event-subscription-name>"Utwórz subskrypcję zdarzeń w temacie przestrzeni nazw:
az eventgrid namespace topic event-subscription create --resource-group $resource_group --topic-name $topic --name $event_subscription --namespace-name $namespace --delivery-configuration "{deliveryMode:Queue,queue:{receiveLockDurationInSeconds:300,maxDeliveryCount:4,eventTimeToLive:P1D}}"
Wysyłanie zdarzeń do tematu
Wyślij przykładowe zdarzenie do tematu przestrzeni nazw, wykonując kroki opisane w tej sekcji.
Lista kluczy dostępu do przestrzeni nazw
Pobierz klucze dostępu skojarzone z utworzoną przestrzenią nazw. Potrzebujesz jednego z nich do uwierzytelniania podczas publikowania zdarzeń. Aby wyświetlić listę kluczy, pobierz pełny identyfikator zasobu przestrzeni nazwowej. Uruchom następujące polecenie:
namespace_resource_id=$(az eventgrid namespace show --resource-group $resource_group --name $namespace --query "id" --output tsv)Pobierz pierwszy klucz z przestrzeni nazw:
key=$(az eventgrid namespace list-key --resource-group $resource_group --namespace-name $namespace --query "key1" --output tsv)
Publikowanie zdarzenia
Pobierz nazwę hosta przestrzeni nazw. Używasz go do tworzenia punktu końcowego HTTP dla przestrzeni nazw, do którego są wysyłane zdarzenia. Następujące operacje były najpierw dostępne w wersji
2023-06-01-previewinterfejsu API .publish_operation_uri="https://"$(az eventgrid namespace show -g $resource_group -n $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic:publish?api-version=2023-06-01-previewUtwórz przykładowe zdarzenie zgodne z rozwiązaniem CloudEvents :
event=' { "specversion": "1.0", "id": "'"$RANDOM"'", "type": "com.yourcompany.order.ordercreatedV2", "source" : "/mycontext", "subject": "orders/O-234595", "time": "'`date +%Y-%m-%dT%H:%M:%SZ`'", "datacontenttype" : "application/json", "data":{ "orderId": "O-234595", "url": "https://yourcompany.com/orders/o-234595"}} 'Element
datato ładunek zdarzenia. W tym polu można umieścić dowolną poprawnie sformułowaną zawartość JSON. Właściwości, które mogą przejść do zdarzenia, są również nazywane atrybutami kontekstu. Aby uzyskać więcej informacji, zobacz CloudEvents.Użyj narzędzia CURL, aby wysłać zdarzenie do tematu. CURL to narzędzie, które wysyła żądania HTTP.
curl -X POST -H "Content-Type: application/cloudevents+json" -H "Authorization:SharedAccessKey $key" -d "$event" $publish_operation_uri
Odbieranie zdarzenia
Zdarzenia z usługi Event Grid są odbierane za pomocą punktu końcowego, który jest powiązany z subskrypcją zdarzeń.
Utwórz punkt końcowy, uruchamiając następujące polecenie:
receive_operation_uri="https://"$(az eventgrid namespace show --resource-group $resource_group --name $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic/eventsubscriptions/$event_subscription:receive?api-version=2023-06-01-previewPrześlij żądanie korzystania ze zdarzenia:
curl -X POST -H "Content-Type: application/json" -H "Authorization:SharedAccessKey $key" $receive_operation_uri
Potwierdzanie zdarzenia
Po otrzymaniu zdarzenia przekażesz to zdarzenie do aplikacji w celu przetworzenia. Po pomyślnym przetworzeniu zdarzenia nie musisz już mieć tego zdarzenia w subskrypcji zdarzeń. Aby nakazać usłudze Event Grid usunięcie zdarzenia, potwierdzasz to za pomocą tokenu blokady otrzymanego w odpowiedzi operacji odbierania.
W poprzedniej sekcji otrzymano odpowiedź zawierającą obiekt
brokerPropertiesz właściwościąlockToken. Skopiuj wartość tokenu blokady i ustaw ją w zmiennej środowiskowej:lockToken="<paste-the-lock-token-here>"Skompiluj ładunek operacji potwierdzenia, który określa token blokady dla zdarzenia, które chcesz potwierdzić.
acknowledge_request_payload=' { "lockTokens": ["'$lockToken'"]} 'Kontynuuj tworzenie ciągu przy użyciu identyfikatora URI operacji potwierdzenia:
acknowledge_operation_uri="https://"$(az eventgrid namespace show -g $resource_group -n $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic/eventsubscriptions/$event_subscription:acknowledge?api-version=2023-06-01-previewNa koniec prześlij żądanie potwierdzenia odebranego zdarzenia:
curl -X POST -H "Content-Type: application/json" -H "Authorization:SharedAccessKey $key" -d "$acknowledge_request_payload" $acknowledge_operation_uriJeśli operacja potwierdzenia zostanie wykonana przed wygaśnięciem tokenu blokady (300 sekund zgodnie z ustawieniem podczas tworzenia subskrypcji zdarzeń), powinna zostać wyświetlona odpowiedź podobna do następującego przykładu:
{"succeededLockTokens":["CiYKJDQ4NjY5MDEyLTk1OTAtNDdENS1BODdCLUYyMDczNTYxNjcyMxISChDZae43pMpE8J8ovYMSQBZS"],"failedLockTokens":[]}
Następny krok
Aby dowiedzieć się więcej na temat modelu dostarczania typu pull, zobacz Dostarczanie typu pull za pomocą protokołu HTTP.