Publikowanie w tematach przestrzeni nazw i korzystanie ze zdarzeń w usłudze Azure Event Grid
Ten artykuł zawiera krótkie wprowadzenie do dostarczania ściągnięcia przy użyciu curl
polecenia powłoki bash w celu publikowania, odbierania i potwierdzania zdarzeń. Zasoby usługi Event Grid są tworzone przy użyciu poleceń interfejsu wiersza polecenia. Ten artykuł jest odpowiedni do szybkiego testowania funkcji dostarczania ściągania. Aby uzyskać przykładowy kod korzystający z zestawów SDK płaszczyzny danych, zobacz przykłady dla platformy .NET lub Java. W przypadku języka Java udostępniamy przykładowy kod w dwóch artykułach: publikowanie zdarzeń i odbieranie zdarzeń — przewodniki Szybki start.
Aby uzyskać więcej informacji na temat modelu dostarczania ściągnięcia, zobacz artykuły omówienie pojęć i dostarczania ściągnięcia.
Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.
Wymagania wstępne
Użyj środowiska powłoki Bash w usłudze Azure Cloud Shell. Aby uzyskać więcej informacji, zobacz Szybki start dotyczący powłoki Bash w usłudze Azure Cloud Shell.
Jeśli wolisz uruchamiać polecenia referencyjne interfejsu wiersza polecenia lokalnie, zainstaluj interfejs wiersza polecenia platformy Azure. Jeśli korzystasz z systemu Windows lub macOS, rozważ uruchomienie interfejsu wiersza polecenia platformy Azure w kontenerze Docker. Aby uzyskać więcej informacji, zobacz Jak uruchomić interfejs wiersza polecenia platformy Azure w kontenerze platformy Docker.
Jeśli korzystasz z instalacji lokalnej, zaloguj się do interfejsu wiersza polecenia platformy Azure za pomocą polecenia az login. Aby ukończyć proces uwierzytelniania, wykonaj kroki wyświetlane w terminalu. Aby uzyskać inne opcje logowania, zobacz Logowanie się przy użyciu interfejsu wiersza polecenia platformy Azure.
Po wyświetleniu monitu zainstaluj rozszerzenie interfejsu wiersza polecenia platformy Azure podczas pierwszego użycia. Aby uzyskać więcej informacji na temat rozszerzeń, zobacz Korzystanie z rozszerzeń w interfejsie wiersza polecenia platformy Azure.
Uruchom polecenie az version, aby znaleźć zainstalowane wersje i biblioteki zależne. Aby uaktualnić do najnowszej wersji, uruchom polecenie az upgrade.
- Ten artykuł wymaga wersji 2.0.70 lub nowszej interfejsu wiersza polecenia platformy Azure. W przypadku korzystania z 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. Ta grupa zasobów służy do przechowywania wszystkich zasobów utworzonych 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 klawisz ENTER, aby uruchomić to polecenie.
Zadeklaruj zmienną do przechowywania nazwy grupy zasobów platformy Azure. Określ nazwę grupy zasobów, zastępując
<your-resource-group-name>
ciąg wartością, którą chcesz.resource_group="<your-resource-group-name>"
Utwórz grupę zasobów. Zmień lokalizację w miarę dopasowania.
az group create --name $resource_group --location eastus
Włączanie dostawcy zasobów usługi Event Grid
Jeśli usługa Event Grid nie była wcześniej używana 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.EventGrid
Ukoń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ść
registrationState
uzyska 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 znaki to a-z, A-Z, 0-9 i -
- Nie powinien zaczynać się od zarezerwowanych prefiksów słów kluczowych, takich jak
Microsoft
,System
lubEventGrid
.
Zadeklaruj zmienną do przechowywania nazwy przestrzeni nazw usługi Event Grid. Określ nazwę przestrzeni nazw, zastępując ciąg
<your-namespace-name>
wartością, którą chcesz.namespace="<your-namespace-name>"
Tworzenie przestrzeni nazw. Możesz zmienić lokalizację, w której została wdrożona.
az eventgrid namespace create -g $resource_group -n $namespace -l eastus
Tworzenie tematu przestrzeni nazw
Utwórz temat używany do przechowywania wszystkich zdarzeń publikowanych w punkcie końcowym przestrzeni nazw.
Zadeklaruj zmienną do przechowywania nazwy tematu przestrzeni nazw. Określ nazwę tematu przestrzeni nazw, zastępując ciąg
<your-topic-name>
wartością, którą chcesz.topic="<your-topic-name>"
Utwórz temat przestrzeni nazw:
az eventgrid namespace topic create -g $resource_group -n $topic --namespace-name $namespace
Tworzenie subskrypcji zdarzeń
Utwórz subskrypcję zdarzeń ustawiając tryb dostarczania na kolejkę, która obsługuje dostarczanie ściągnięcia. Aby uzyskać więcej informacji na temat wszystkich opcji konfiguracji, zobacz najnowszy interfejs API REST płaszczyzny sterowania usługi Event Grid.
Zadeklaruj zmienną do przechowywania nazwy subskrypcji zdarzeń do tematu przestrzeni nazw. Określ nazwę subskrypcji zdarzeń, zastępując ciąg
<your-event-subscription-name>
wartością, którą chcesz.event_subscription="<your-event-subscription-name>"
Utwórz subskrypcję zdarzeń w temacie przestrzeni nazw:
az eventgrid namespace topic event-subscription create -g $resource_group --topic-name $topic -n $event_subscription --namespace-name $namespace --delivery-configuration "{deliveryMode:Queue,queue:{receiveLockDurationInSeconds:300,maxDeliveryCount:4,eventTimeToLive:P1D}}"
Wysyłanie zdarzeń do tematu
Teraz wyślij przykładowe zdarzenie do tematu przestrzeni nazw, wykonując kroki opisane w tej sekcji.
Wyświetlanie listy kluczy dostępu do przestrzeni nazw
Pobierz klucze dostępu skojarzone z utworzoną przestrzenią nazw. Jeden z nich służy do uwierzytelniania podczas publikowania zdarzeń. Aby wyświetlić listę kluczy, musisz najpierw uzyskać pełny identyfikator zasobu przestrzeni nazw. Pobierz go, uruchamiając następujące polecenie:
namespace_resource_id=$(az eventgrid namespace show -g $resource_group -n $namespace --query "id" --output tsv)
Pobierz pierwszy klucz z przestrzeni nazw:
key=$(az eventgrid namespace list-key -g $resource_group --namespace-name $namespace --query "key1" --output tsv)
Publikowanie zdarzenia
Pobierz nazwę hosta przestrzeni nazw. Służy do tworzenia punktu końcowego HTTP przestrzeni nazw, do którego są wysyłane zdarzenia. Następujące operacje były najpierw dostępne w wersji
2023-06-01-preview
interfejsu 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-preview
Utwó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
data
to ładunek zdarzenia. W tym polu można umieścić dowolną poprawnie sformułowaną zawartość JSON. Aby uzyskać więcej informacji na temat właściwości (nazywanych również atrybutami kontekstu), które mogą przejść w zdarzeniu, zobacz specyfikacje 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 przy użyciu punktu końcowego, który odwołuje się do subskrypcji zdarzeń.
Utwórz ten punkt końcowy, uruchamiając następujące polecenie:
receive_operation_uri="https://"$(az eventgrid namespace show -g $resource_group -n $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic/eventsubscriptions/$event_subscription:receive?api-version=2023-06-01-preview
Prześ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 poinstruować usługę Event Grid o usunięciu zdarzenia, należy potwierdzić , że korzystasz z tokenu blokady otrzymanego w odpowiedzi operacji odbierania.
W poprzednim kroku powinna zostać odebrana odpowiedź zawierająca
brokerProperties
obiekt z właściwościąlockToken
. Skopiuj wartość tokenu blokady i ustaw ją w zmiennej środowiskowej:lockToken="<paste-the-lock-token-here>"
Teraz 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-preview
Na 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_uri
Jeś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ępne kroki
Aby dowiedzieć się więcej na temat modelu dostarczania ściągnięcia, zobacz Omówienie dostarczania ściągnięcia.