Schemat zdarzeń usługi Azure Event Grid
W tym artykule opisano schemat usługi Event Grid, który jest zastrzeżonym, niespodzielnym, ale w pełni funkcjonalnym formatem zdarzeń. Usługa Event Grid nadal obsługuje ten format zdarzenia i będzie nadal go obsługiwać. Jednak rozwiązanie CloudEvents jest zalecanym formatem zdarzeń do użycia. Jeśli używasz aplikacji korzystających z formatu usługi Event Grid, możesz znaleźć przydatne informacje w sekcji [CloudEvents] opisujące przekształcenia między usługą Event Grid i formatem CloudEvents obsługiwanym przez usługę Event Grid.
W tym artykule opisano szczegółowo właściwości i schemat formatu usługi Event Grid. Zdarzenia składają się z zestawu czterech wymaganych właściwości ciągu. Właściwości są wspólne dla wszystkich zdarzeń od dowolnego wydawcy. Obiekt danych ma właściwości specyficzne dla każdego wydawcy. W przypadku tematów systemowych te właściwości są specyficzne dla dostawcy zasobów, takiego jak Azure Storage lub Azure Event Hubs.
Źródła zdarzeń wysyłają zdarzenia do usługi Azure Event Grid w tablicy, co może mieć kilka obiektów zdarzeń. Podczas publikowania zdarzeń w temacie usługi Event Grid tablica może mieć całkowity rozmiar do 1 MB. Każde zdarzenie w tablicy jest ograniczone do 1 MB. Jeśli zdarzenie lub tablica jest większe niż limity rozmiaru, otrzymasz odpowiedź 413 Ładunek za duży. Operacje są jednak naliczane w wysokości 64 KB. W związku z tym zdarzenia o ponad 64 KB powodują naliczanie opłat za operacje, tak jakby były to wiele zdarzeń. Na przykład zdarzenie o wartości 130 KB spowoduje naliczenie operacji tak, jakby były to trzy oddzielne zdarzenia.
Usługa Event Grid wysyła zdarzenia do subskrybentów w tablicy, która ma jedno zdarzenie. To zachowanie może ulec zmianie w przyszłości.
Schemat JSON zdarzenia usługi Event Grid i ładunku danych każdego wydawcy platformy Azure można znaleźć w magazynie schematu zdarzeń.
Uwaga
Obsługa schematu zdarzeń usługi Event Grid nie zostanie wycofana, ale w przyszłości nie wprowadzimy żadnych istotnych ulepszeń. Zalecamy użycie schematu CloudEvents, który zapewnia ustandaryzowaną i niezależną od protokołu definicję struktury i opisu metadanych zdarzeń. Aby uzyskać więcej informacji, zobacz CloudEvents v1.0 schema with Azure Event Grid (Schemat cloudEvents w wersji 1.0 za pomocą usługi Azure Event Grid).
Schemat zdarzeń
W poniższym przykładzie przedstawiono właściwości używane przez wszystkich wydawców zdarzeń:
[
{
"topic": string,
"subject": string,
"id": string,
"eventType": string,
"eventTime": string,
"data":{
object-unique-to-each-publisher
},
"dataVersion": string,
"metadataVersion": string
}
]
Na przykład schemat opublikowany dla zdarzenia usługi Azure Blob Storage to:
[
{
"topic": "/subscriptions/{subscription-id}/resourceGroups/Storage/providers/Microsoft.Storage/storageAccounts/xstoretestaccount",
"subject": "/blobServices/default/containers/oc2d2817345i200097container/blobs/oc2d2817345i20002296blob",
"eventType": "Microsoft.Storage.BlobCreated",
"eventTime": "2017-06-26T18:41:00.9584103Z",
"id": "831e1650-001e-001b-66ab-eeb76e069631",
"data": {
"api": "PutBlockList",
"clientRequestId": "6d79dbfb-0e37-4fc4-981f-442c9ca65760",
"requestId": "831e1650-001e-001b-66ab-eeb76e000000",
"eTag": "0x8D4BCC2E4835CD0",
"contentType": "application/octet-stream",
"contentLength": 524288,
"blobType": "BlockBlob",
"url": "https://oc2d2817345i60006.blob.core.windows.net/oc2d2817345i200097container/oc2d2817345i20002296blob",
"sequencer": "00000000000004420000000000028963",
"storageDiagnostics": {
"batchId": "b68529f3-68cd-4744-baa4-3c0498ec19f0"
}
},
"dataVersion": "",
"metadataVersion": "1"
}
]
Właściwości zdarzenia
Wszystkie zdarzenia mają te same dane najwyższego poziomu:
Właściwość | Type | Wymagania | opis |
---|---|---|---|
topic |
string | Nie, ale jeśli jest to uwzględnione, musi być dokładnie zgodny z identyfikatorem usługi Azure Resource Manager tematu usługi Event Grid. Jeśli nie zostanie uwzględniona, na zdarzenie zostaną umieszczone sygnatury usługi Event Grid. | Pełna ścieżka zasobu do źródła zdarzeń. To pole nie jest możliwe do zapisu. Ta wartość jest podawana przez usługę Event Grid. |
subject |
string | Tak | Zdefiniowana przez wydawcę ścieżka do tematu zdarzenia. |
eventType |
string | Tak | Jeden z zarejestrowanych typów zdarzeń dla tego źródła zdarzeń. |
eventTime | string | Tak | Czas generowania zdarzenia na podstawie czasu UTC dostawcy. |
id |
string | Tak | Unikatowy identyfikator zdarzenia. |
data |
obiekt | Tak | Dane zdarzenia specyficzne dla dostawcy zasobów. |
dataVersion |
string | Nie, ale zostanie oznaczone pustą wartością. | Wersja schematu obiektu danych. Wydawca definiuje wersję schematu. |
metadataVersion |
string | Nie jest to wymagane, ale w przypadku dołączeń musi być dokładnie zgodne ze schematem metadataVersion usługi Event Grid (obecnie tylko 1 ). Jeśli nie zostanie uwzględniona, na zdarzenie zostaną umieszczone sygnatury usługi Event Grid. |
Wersja schematu metadanych zdarzenia. Usługa Event Grid definiuje schemat właściwości najwyższego poziomu. Ta wartość jest podawana przez usługę Event Grid. |
Aby dowiedzieć się więcej o właściwościach obiektu danych, zobacz artykuły w tej sekcji: Tematy systemowe.
W przypadku tematów niestandardowych wydawca zdarzeń określa obiekt danych. Dane najwyższego poziomu powinny mieć te same pola co standardowe zdarzenia zdefiniowane przez zasoby.
Podczas publikowania zdarzeń w tematach niestandardowych utwórz tematy dla Twoich zdarzeń, które ułatwiają subskrybentom sprawdzenie, czy są zainteresowani wydarzeniem. Subskrybenci używają tematu do filtrowania i kierowania zdarzeń. Rozważ podanie ścieżki, w której wystąpiło zdarzenie, aby subskrybenci mogli filtrować według segmentów tej ścieżki. Ścieżka umożliwia subskrybentom filtrowanie zdarzeń wąsko lub szeroko. Jeśli na przykład podasz trzy ścieżki segmentu, takie jak /A/B/C
w temacie, subskrybenci będą mogli filtrować według pierwszego segmentu /A
, aby uzyskać szeroki zestaw zdarzeń. Ci subskrybenci otrzymują zdarzenia z tematami takimi jak /A/B/C
lub /A/D/E
. Inni subskrybenci mogą filtrować /A/B
, aby uzyskać węższy zestaw zdarzeń.
Czasami temat wymaga więcej szczegółów na temat tego, co się stało. Na przykład wydawca kont magazynu udostępnia temat /blobServices/default/containers/<container-name>/blobs/<file>
po dodaniu pliku do kontenera. Subskrybent może filtrować według ścieżki /blobServices/default/containers/<container-name>/
, aby pobrać wszystkie zdarzenia dla tego kontenera, ale nie inne kontenery na koncie magazynu. Subskrybent może również filtrować lub kierować według sufiksu .txt
, aby pracować tylko z plikami tekstowymi.
CloudEvents
CloudEvents jest zalecanym formatem zdarzeń do użycia. Usługa Azure Event Grid nadal inwestuje w funkcje związane z co najmniej formatem JSON cloudEvents. Biorąc pod uwagę fakt, że niektóre źródła zdarzeń, takie jak usługi platformy Azure, używają formatu usługi Event Grid, poniższa tabela ułatwia zrozumienie transformacji obsługiwanej podczas korzystania z formatów CloudEvents i Event Grid jako schematu wejściowego w tematach i jako schematu wyjściowego w subskrypcjach zdarzeń. Schemat danych wyjściowych usługi Event Grid nie może być używany w przypadku używania rozwiązania CloudEvents jako schematu wejściowego, ponieważ usługa CloudEvents obsługuje atrybuty rozszerzenia, które nie są obsługiwane przez schemat usługi Event Grid.
Schemat wejściowy | Schemat danych wyjściowych |
---|---|
Format CloudEvents | Format CloudEvents |
Format usługi Event Grid | Format CloudEvents |
Format usługi Event Grid | Format usługi Event Grid |
Następne kroki
- Aby zapoznać się z wprowadzeniem do usługi Azure Event Grid, zobacz Co to jest usługa Event Grid?
- Aby uzyskać więcej informacji na temat tworzenia subskrypcji usługi Azure Event Grid, zobacz Schemat subskrypcji usługi Event Grid.