Azure Event Grid-Namespacekonzepte
In diesem Artikel werden die wichtigsten Konzepte und Funktionen vorgestellt, die Namespacethemen zugeordnet sind.
Ereignisse
Ein Ereignis ist die kleinste Informationsmenge, die einen Vorgang oder Vorfall im System vollständig beschreibt. Wir bezeichnen ein Ereignis häufig als „diskretes Ereignis“, weil es eine eindeutige, eigenständige Tatsache in einem System darstellt, die eine Erkenntnis bietet, die verwertbar sein kann. Jedes Ereignis enthält allgemeine Informationen wie source
(Quelle) des Ereignisses, time
(Zeitpunkt), an dem das Ereignis aufgetreten ist, und einen eindeutigen Bezeichner. Jedes Ereignis verfügt auch über einen type
eindeutigen Bezeichner, der die Art der Ankündigung beschreibt, für die das Ereignis verwendet wird.
Beispielsweise enthält ein Ereignis zu einer neuen Datei, die in Azure Storage erstellt wird, Details über die Datei, z.B. den Wert von lastTimeModified
. Ein Event Hubs-Ereignis die URL der Erfassungsdatei. Ein Ereignis zu einer neuen Bestellung in Ihrem Bestellungs-Microservice könnte ein orderId
-Attribut und ein URL-Attribut für die Zustandsdarstellung der Bestellung besitzen. Einige weitere Beispiele für Ereignistypen sind: com.yourcompany.Orders.OrderCreated
, org.yourorg.GeneralLedger.AccountChanged
, io.solutionname.Auth.MaximumNumberOfUserLoginAttemptsReached
.
Hier sehen Sie ein Beispiel für ein Ereignis:
{
"specversion" : "1.0",
"type" : "com.yourcompany.order.created",
"source" : "/orders/account/123",
"subject" : "O-28964",
"id" : "A234-1234-1234",
"time" : "2018-04-05T17:31:00Z",
"comexampleextension1" : "value",
"comexampleothervalue" : 5,
"datacontenttype" : "application/json",
"data" : {
"orderId" : "O-28964",
"URL" : "https://com.yourcompany/orders/O-28964"
}
}
Eine andere Art von Ereignis
Die Benutzercommunity bezeichnet als „Ereignisse“ auch Nachrichten, die einen Datenpunkt enthalten, wie z. B. das Lesen eines einzelnen Geräts oder einen Klick auf einer Webanwendungsseite. Diese Art von Ereignis wird normalerweise über ein Zeitfenster analysiert, um Erkenntnisse zu gewinnen und eine Aktion auszuführen. In der Dokumentation von Event Grid wird diese Art von Ereignis als Datenpunkt, Streamingdaten oder einfach als Telemetrie(daten) bezeichnet. Unter anderem wird diese Art von Ereignissen mit dem Message Queuing Telemetry Transport-Brokerfeature (MQTT) von Event Grid verwendet.
Unterstützung für CloudEvents
Event Grid-Namensraumthemen akzeptieren Ereignisse, die dem offenen Standard CloudEvents 1.0 der Cloud Native Computing Foundation (CNCF) entsprechen, unter Verwendung der HTTP-Protokollbindung mit JSON-Format. Eine CloudEvents-Instanz ist eine Art von Nachricht, die den zu übermittelnden Inhalt (als Ereignisdaten bezeichnet) und die dazugehörigen Metadaten enthält. Die Ereignisdaten in ereignisgesteuerten Architekturen enthalten in der Regel die Informationen, die eine Änderung des Systemzustands ankündigen. Die CloudEvents-Metadaten bestehen aus einer Reihe von Attributen, die kontextbezogene Informationen zu der Nachricht bereitstellen, z. B. woher sie stammt (das Quellsystem), der Typ usw.
Weitere Informationen finden Sie unter Support für das CloudEvents-Schema.
Herausgeber
Ein Herausgeber ist die Anwendung, die Ereignisse an Event Grid sendet. Dabei könnte es sich um dieselbe Anwendung handeln, aus der die Ereignisse stammen – die Ereignisquelle. Sie können Ereignisse aus Ihrer eigenen Anwendung veröffentlichen, wenn Sie Namespacethemen verwenden.
Ereignisquellen
Eine Ereignisquelle ist die Quelle, in der das Ereignis auftritt. Jede Ereignisquelle unterstützt einen oder mehrere Ereignistypen. Ihre Anwendung ist beispielsweise die Ereignisquelle für benutzerdefinierte Ereignisse, das Ihr System definiert. Bei Verwendung von Namespacethemen werden Ihre eigenen Anwendungen als Ereignisquellen unterstützt.
Namespaces
Ein Event Grid-Namespace ist ein Verwaltungscontainer für die folgenden Ressourcen:
Resource | Unterstütztes Protokoll |
---|---|
Namespacethemen | HTTP |
Themenbereiche | MQTT |
Clients | MQTT |
Clientgruppen | MQTT |
Zertifizierungsstellenzertifikate | MQTT |
Berechtigungsbindungen | MQTT |
Mit einem Azure Event Grid-Namespace können Sie jetzt verwandte Ressourcen gruppieren und als einzelne Einheit in Ihrem Azure-Abonnement verwalten. Sie erhalten einen eindeutigen vollqualifizierten Domänennamen (FQDN).
Ein Namespace macht zwei Endpunkte verfügbar:
- Einen HTTP-Endpunkt zur Unterstützung allgemeiner Messaginganforderungen mithilfe von Namespacethemen.
- Einen MQTT-Endpunkt für IoT-Messaging oder -Lösungen, die MQTT verwenden.
Ein Namespace stellt auch DNS-integrierte Netzwerkendpunkte bereit. Außerdem stellt er eine Reihe von Funktionen für die Zugriffskontrolle und die Verwaltung der Netzwerkintegration bereit, wie z. B. die Filterung öffentlicher IP-Eingänge und privater Verbindungen. Er ist auch der Container für verwaltete Identitäten, die für die enthaltenen Ressourcen im Namespace verwendet werden.
Hier finden Sie weitere Informationen zu Namespaces:
- Namespace ist eine nachverfolgte Ressource mit
tags
undlocation
Eigenschaften. Sobald er erstellt wurde, kann er unter gefundenresources.azure.com
werden. - Der Name des Namespaces kann 3 bis 50 Zeichen lang sein. Er kann alphanumerische Zeichen, einen Bindestrich (-), aber keine Leerzeichen enthalten.
- Der Name muss pro Region eindeutig sein.
Durchsatzeinheiten
Durchsatzeinheiten (TUs) definieren die Kapazität der Eingangs- und Ausgangsereignisrate in Namespaces. Weitere Informationen finden Sie unter Kontingente und Grenzwerte in Azure Event Grid.
Themen
Ein Thema enthält Ereignisse, die in Event Grid veröffentlicht wurden. In der Regel verwenden Sie eine Themenressource für eine Sammlung verwandter Ereignisse. Wir haben häufig auf Themen innerhalb eines Namespace als Namespacethemenverwiesen.
Namespacethemen
Namespacethemen sind Themen, die in einem Event Grid-Namespace erstellt werden. Ihre Anwendung veröffentlicht Ereignisse an einem HTTP-Namespaceendpunkt, der ein Namespacethema angibt, in dem veröffentlichte Ereignisse logisch enthalten sind. Beim Entwerfen Ihrer Anwendung müssen Sie entscheiden, wie viele Themen erstellt werden sollen. Für relativ große Lösungen erstellen Sie für jede Kategorie verwandter Ereignisse ein Namespacethema. Betrachten Sie beispielsweise eine Anwendung, die Benutzerkonten verwaltet, und eine andere Anwendung für Kundenaufträge. Es ist unwahrscheinlich, dass alle Ereignisabonnenten Ereignisse von beiden Anwendungen wünschen. Um Bedenken zu trennen, erstellen Sie zwei Namespacethemen: eins für jede Anwendung. Lassen Sie Ereignisconsumer das Thema entsprechend ihren Anforderungen abonnieren. Für kleine Lösungen empfiehlt es sich ggf., alle Ereignisse an ein Thema zu senden.
Namespacethemen unterstützen die Pullübermittlung und Pushübermittlung. Informationen unter Wann Pull- oder Pushübermittlung verwendet werden sollte helfen Ihnen bei der Entscheidung, ob Pullübermittlung der richtige Ansatz ist, angesichts Ihrer Anforderungen.
Ereignisabonnements
Ein Ereignisabonnement ist eine Konfigurationsressource, die einem einzelnen Thema zugeordnet ist. Ein Ereignisabonnement verwenden Sie unter anderem, um Kriterien für die Ereignisauswahl festzulegen, um die für einen Abonnenten verfügbare Ereignissammlung aus der Gesamtzahl der in einem Thema verfügbaren Ereignisse zu definieren. Sie können Ereignisse nach den Anforderungen der Abonnenten filtern. Sie können beispielsweise Ereignisse nach Ereignistypen filtern. Sie können auch Filterkriterien für Ereignisdateneigenschaften definieren, wenn Sie ein JSON-Objekt als Wert für die data-Eigenschaft verwenden. Weitere Informationen zu Ressourceneigenschaften finden Sie, indem Sie in der Event Grid-REST-API nach Vorgängen auf Steuerungsebene suchen.
Ein Beispiel zum Erstellen von Abonnements für Namespacethemen finden Sie unter Veröffentlichen und Nutzen von Nachrichten mithilfe von Namespacethemen mithilfe von CLI.
Hinweis
Die Ereignisabonnements unter einem Namespacethema weisen ein vereinfachtes Ressourcenmodell auf, verglichen mit dem für benutzerdefinierte, Domänen-, Partner- und Systemthemen verwendeten Modell (Event Grid Basic). Weitere Informationen finden Sie im Artikel zum Erstellen, Anzeigen und Verwalten von Ereignisabonnements.
Pullübermittlung
Bei der Pullübermittlung stellt Ihre Anwendung eine Verbindung mit dem Event Grid her, um Nachrichten mithilfe von warteschlangenähnlicher Semantik zu lesen. Wenn Anwendungen eine Verbindung mit Event Grid herstellen, um Ereignisse zu nutzen, steuern sie die Ereignisverbrauchsrate und deren Anzeigedauer. Verbraucheranwendungen können bei der Verbindung mit Event Grid auch private Endpunkte verwenden, um Ereignisse über einen privaten IP-Raum zu lesen.
Die Pullübermittlung unterstützt die folgenden Vorgänge zum Lesen von Nachrichten und zum Steuern des Nachrichtenstatus: Empfangen, Bestätigen, Freigeben, Ablehnenund Sperre erneuern. Weitere Informationen finden Sie in der Übersicht über Pullübermittlung.
Datenform beim Empfang von Ereignissen mit Pullübermittlung
Wenn Ereignisse mit Pull Delivery geliefert werden, enthält Event Grid ein Array von Objekten, das wiederum die Objekte event und brokerProperties enthält. Der Wert der Eigenschaft event ist das CloudEvent, das im strukturierten Inhaltsmodus geliefert wird. Das brokerProperties-Objekt enthält das mit dem gelieferten CloudEvent verknüpfte Sperr-Token. Das folgende JSON-Objekt ist eine Beispielantwort von einem Empfangsvorgang, der zwei Ereignisse zurückgibt:
{
"value": [
{
"brokerProperties": {
"lockToken": "CiYKJDUwNjE4QTFFLUNDODQtNDZBQy1BN0Y4LUE5QkE3NjEwNzQxMxISChDXYS23Z+5Hq754VqQjxywE",
"deliveryCount": 2
},
"event": {
"specversion": "1.0",
"id": "A234-1234-1235",
"source": "/mycontext",
"time": "2018-04-05T17:31:00Z",
"type": "com.example.someeventtype",
"data": "some data"
}
},
{
"brokerProperties": {
"lockToken": "CiYKJDUwNjE4QTFFLUNDODQtNDZBQy1BN0Y4LUE5QkE3NjEwNzQxMxISChDLeaL+nRJLNq3/5NXd/T0b",
"deliveryCount": 1
},
"event": {
"specversion": "1.0",
"id": "B688-1234-1235",
"source": "/mycontext",
"type": "com.example.someeventtype",
"time": "2018-04-05T17:31:00Z",
"data": {
"somekey" : "value",
"someOtherKey" : 9
}
}
}
]
}
Pushübermittlung
Mit der Pushübermittlung sendet Event Grid Ereignisse an ein Ziel, das in einem Push-Ereignisabonnement (Übermittlungsmodus in) konfiguriert ist. Sie stellt eine robuste Wiederholungslogik bereit, falls das Ziel keine Ereignisse empfangen kann.
Wichtig
Die Pushübermittlung von Event Grid-Namespaces unterstützt derzeit Azure Event Hubs als Ziel. In Zukunft werden Event Grid-Namespaces weitere Ziele unterstützen (einschließlich aller Ziele, die von Event Grid Basic unterstützt werden).
Event Hubs-Ereignisübermittlung
Event Grid verwendet das Event Hubs-SDK zum Senden von Ereignissen an Event Hubs mithilfe von AMQP. Ereignisse werden als Bytearray mit jedem Element im Array gesendet, das ein CloudEvent enthält.
Push- und Pullübermittlung
Event Grid unterstützt Push- und Pull-Ereignisübermittlung über HTTP. Mit push delivery definieren Sie ein Ziel in einem Ereignisabonnement, einem Webhook oder einem Azure-Dienst, an das Event Grid Ereignisse sendet. Mit der Pullübermittlung stellen Abonnentenanwendungen eine Verbindung mit Event Grid her, um Ereignisse zu nutzen. Die Pull-Lieferung wird für Themen in einem Ereignisraster-Namespace unterstützt.
Wichtig
Event Hubs wird als Ziel für Abonnements für Namespace-Themen unterstützt. In den kommenden Versionen werden Event Grid Namespaces alle derzeit in Event Grid Basic verfügbaren Ziele sowie zusätzliche Ziele unterstützen.
Wann sollte die Pushübermittlung gegenüber der Pullübermittlung verwendet werden?
Die folgenden allgemeinen Richtlinien helfen Ihnen bei der Entscheidung, wann die Pull- oder Pushübermittlung verwendet werden sollte.
Pullübermittlung
- Sie benötigen die volle Kontrolle darüber, wann Ereignisse empfangen werden sollen. So kann es beispielsweise sein, dass Ihre Anwendung nicht die ganze Zeit läuft, nicht stabil genug ist oder dass Sie Daten zu bestimmten Zeiten verarbeiten.
- Sie benötigen die vollständige Kontrolle über die Ereignisnutzung. Beispielsweise weist ein nachgelagerter Dienst oder eine nachgeschaltete Ebene in Ihrer Consumeranwendung ein Problem auf, das verhindert, dass Sie Ereignisse verarbeiten können. In diesem Fall ermöglicht die Pullübermittlungs-API der Consumer-App, ein bereits gelesenes Ereignis wieder zurück an den Broker freizugeben, sodass es später zugestellt werden kann.
- Sie möchten beim Empfang von Ereignissen private Links verwenden, was nur mit der Pull-Zustellung, nicht mit der Push-Zustellung möglich ist.
- Sie können einen Endpunkt nicht verfügbar machen und die Pushübermittlung verwenden, aber Sie können eine Verbindung mit Event Grid herstellen, um Ereignisse zu nutzen.
Pushübermittlung
- Sie möchten nicht ständig abfragen müssen, um festzustellen, ob eine Systemzustandsänderung eingetreten ist. Stattdessen verwenden Sie Event Grid, damit dieses Ihnen zu dem Zeitpunkt Ereignisse sendet, zu dem Zustandsänderungen auftreten.
- Sie verfügen über eine Anwendung, die keine ausgehenden Aufrufe tätigen kann. Ihr Unternehmen könnte sich zum Beispiel Sorgen über eine Datenexfiltration machen. Ihre Anwendung kann jedoch Ereignisse über einen öffentlichen Endpunkt empfangen.
Zugehöriger Inhalt
- Eine Einführung in Event Grid finden Sie unter Informationen zu Event Grid.
- Informationen zu den ersten Schritten bei der Verwendung von Namespacethemen finden Sie unter Veröffentlichen von Ereignissen mithilfe von Namespacethemen.