Pull-levering met HTTP

Dit artikel bouwt voort op het artikel Wat is Azure Event Grid? en in het artikel over concepten van Event Grid om essentiële informatie te bieden voordat u de pull-levering van Event Grid via HTTP gaat gebruiken. Hierin worden fundamentele concepten, resourcemodellen en ondersteunde berichtbezorgingsmodi behandeld. Aan het einde van dit document vindt u nuttige koppelingen naar artikelen die u helpen bij het gebruik van Event Grid en artikelen die uitgebreide conceptuele informatie bieden.

Notitie

Dit document helpt u aan de slag te gaan met Event Grid-mogelijkheden die gebruikmaken van het HTTP-protocol. Dit artikel is geschikt voor gebruikers die toepassingen in de cloud moeten integreren. Zie Overzicht van de MQTT Broker-functie in Azure Event Grid als u IoT-apparaatgegevens moet communiceren.

CloudEvents

Event Grid-naamruimteonderwerpen accepteren gebeurtenissen die voldoen aan de Open Standard CloudEvents 1.0-specificatie van CloudEvents (CloudEvents) van De Cloud Native Computing Foundation (CNCF) met behulp van de HTTP-protocolbinding met JSON-indeling.

Raadpleeg de CloudEvents-concepten voor meer informatie.

CloudEvents con tentmodus s

De Specificatie van CloudEvents definieert drie con tentmodus s die u kunt gebruiken: binair, gestructureerd en gebatcheerd.

Belangrijk

Met elke con tentmodus kunt u tekst (JSON, tekst/*, enzovoort) of binaire gecodeerde gebeurtenisgegevens uitwisselen. De binaire con tentmodus wordt niet uitsluitend gebruikt voor het verzenden van binaire gegevens.

De con tentmodus s gaan niet over de codering die u gebruikt, binair of tekst, maar over hoe de gebeurtenisgegevens en metagegevens worden beschreven en uitgewisseld. De gestructureerde con tentmodus maakt gebruik van één structuur, bijvoorbeeld een JSON-object, waarbij zowel de contextkenmerken als gebeurtenisgegevens zich in de HTTP-nettolading bevinden. De binaire con tentmodus scheidt contextkenmerken, die zijn toegewezen aan HTTP-headers en gebeurtenisgegevens, wat de HTTP-nettolading is gecodeerd volgens de waarde van het mediatype in Content-Type.

Raadpleeg CloudEvents con tentmodus s voor meer informatie.

Berichten en gebeurtenissen

Een CloudEvent draagt doorgaans gebeurtenisgegevens die een gebeurtenis aankondigen in een systeem, dat wil weten een wijziging van de systeemstatus. U kunt echter elk soort gegevens overbrengen wanneer u CloudEvents gebruikt. U kunt bijvoorbeeld de Exchange-indeling van CloudEvents gebruiken om een opdrachtbericht te verzenden om een actie aan te vragen bij een downstreamtoepassing. Een ander voorbeeld is wanneer u berichten routert van de MQTT-broker van Event Grid naar een onderwerp. In dit scenario routert u een MQTT-bericht dat is verpakt in een CloudEvents-envelop.

Pull-levering

Met pull-levering maakt uw toepassing verbinding met Event Grid om CloudEvents te lezen met behulp van semantiek die lijkt op wachtrijen.

Pull-levering biedt de volgende voordelen voor gebeurtenisverbruik:

  • Gebruik gebeurtenissen in uw eigen tempo, op schaal of met een ingangstarief dat uw toepassing ondersteunt.

  • Gebruik gebeurtenissen tegelijk met uw eigen keuze. Bijvoorbeeld als er zakelijke vereisten zijn, worden berichten 's nachts verwerkt.

  • Gebruik gebeurtenissen via een privékoppeling, zodat uw gegevens gebruikmaken van privé-IP-ruimte.

Notitie

  • Naamruimten bieden een eenvoudiger resourcemodel met één soort onderwerp. Op dit moment ondersteunt Event Grid het publiceren van uw eigen toepassingsevenementen via naamruimteonderwerpen. U kunt geen gebeurtenissen van Azure-services of SaaS-systemen van partners gebruiken met behulp van naamruimteonderwerpen. U kunt ook geen systeemonderwerpen, domeinonderwerpen of partneronderwerpen maken in een naamruimte.
  • Naamruimteonderwerpen ondersteunen de JSON-indeling Van CloudEvents.

Wachtrij-gebeurtenisabonnementen

Bij het ontvangen van gebeurtenissen of het gebruik van bewerkingen die de gebeurtenisstatus beheren, geeft een toepassing een HTTP-eindpunt voor de naamruimte, een onderwerpnaam en de naam van een wachtrij-gebeurtenisabonnement op. Voor een wachtrijgebeurtenisabonnement is deliveryMode ingesteld op 'queue'. Wachtrij-gebeurtenisabonnementen worden gebruikt om gebeurtenissen te gebruiken met behulp van de pull-leverings-API. Zie naamruimten, onderwerpen en gebeurtenisabonnementen maken voor meer informatie over het maken van deze resources.

U gebruikt een gebeurtenisabonnement om de filtercriteria voor gebeurtenissen te definiëren en zodoende definieert u effectief de set gebeurtenissen die beschikbaar zijn voor verbruik via dat gebeurtenisabonnement. Een of meer abonneetoepassingen (consumententoepassingen) kunnen verbinding maken met hetzelfde naamruimte-eindpunt en hetzelfde onderwerp en gebeurtenisabonnement gebruiken.

Diagram op hoog niveau van een uitgever en consument met behulp van een gebeurtenisabonnement. Consument maakt gebruik van pull-levering.

Pull-leveringsbewerkingen

Uw toepassing gebruikt de volgende bewerkingen bij het werken met pull-levering.

  • Een ontvangstbewerking wordt gebruikt om een of meer gebeurtenissen te lezen met behulp van één aanvraag voor Event Grid. Standaard wacht de broker tot 60 seconden totdat gebeurtenissen beschikbaar zijn. Gebeurtenissen worden bijvoorbeeld beschikbaar voor levering wanneer ze voor het eerst worden gepubliceerd. Een geslaagde ontvangstaanvraag retourneert nul of meer gebeurtenissen. Als er gebeurtenissen beschikbaar zijn, worden er zoveel mogelijk beschikbare gebeurtenissen geretourneerd tot het aangevraagde aantal gebeurtenissen. Event Grid retourneert ook een vergrendelingstoken voor elke gebeurtenis die wordt gelezen.
  • Een vergrendelingstoken is een soort ingang waarmee een gebeurtenis wordt geïdentificeerd die u kunt gebruiken om de status ervan te beheren.
  • Zodra een consumententoepassing een gebeurtenis ontvangt en verwerkt, wordt die gebeurtenis bevestigd . Met deze bewerking wordt Event Grid geïnstrueerd om de gebeurtenis te verwijderen, zodat deze niet opnieuw wordt verzonden naar een andere client. De consumententoepassing erkent een of meer tokens met één aanvraag door hun vergrendelingstokens op te geven voordat ze verlopen.

In sommige andere gevallen kan uw consumententoepassing gebeurtenissen vrijgeven of afwijzen.

  • Uw consumententoepassing brengt een ontvangen gebeurtenis vrij om Event Grid te signaleren dat deze niet gereed is voor het verwerken van die gebeurtenis en om deze beschikbaar te maken voor herlivery. Dit doet u door de releasebewerking aan te roepen met de vergrendelingstokens waarmee de gebeurtenissen worden geïdentificeerd die moeten worden teruggestuurd naar Event Grid. Uw toepassing kan bepalen of de gebeurtenis onmiddellijk moet worden vrijgegeven of als er een vertraging moet worden gebruikt voordat de gebeurtenis beschikbaar is voor herlivery.

  • U kunt ervoor kiezen om een gebeurtenis te weigeren als er een voorwaarde is, mogelijk permanent, waardoor uw consumententoepassing de gebeurtenis niet kan verwerken. Een onjuist ingedeeld bericht kan bijvoorbeeld worden geweigerd omdat het niet kan worden geparseerd. Geweigerde gebeurtenissen zijn onbeletterd, als er een bestemming met een dode letter beschikbaar is. Anders worden ze verwijderd.

Bereik waarop pull-leveringsbewerkingen worden uitgevoerd

Wanneer u een ontvangst-, bevestigings-, release-, weigerings- of verlengingsvergrendelingsbewerking aanroept, worden deze acties uitgevoerd in de context van het gebeurtenisabonnement. Als u bijvoorbeeld een gebeurtenis bevestigt, is die gebeurtenis niet meer beschikbaar via het gebeurtenisabonnement dat wordt gebruikt bij het aanroepen van de bevestigingsactie . Voor een ander gebeurtenisabonnement is mogelijk nog steeds dezelfde gebeurtenis beschikbaar. Dat komt doordat een gebeurtenisabonnement een kopie van de gepubliceerde gebeurtenissen ophaalt. Deze gebeurteniskopieën verschillen in feite van elkaar in verschillende gebeurtenisabonnementen. Elke gebeurtenis heeft een eigen status onafhankelijk van andere gebeurtenissen.

Gegevensshape bij het ontvangen van gebeurtenissen met behulp van pull-levering

Bij het leveren van gebeurtenissen met behulp van pull-levering bevat Event Grid een matrix met objecten die op hun beurt de gebeurtenis - en brokerProperties-objecten bevatten. De waarde van de gebeurteniseigenschap is de CloudEvent die wordt geleverd in structured con tentmodus. Het brokerProperties-object bevat het vergrendelingstoken dat is gekoppeld aan de CloudEvent geleverd. Het volgende json-object is een voorbeeldantwoord van een ontvangstbewerking die twee gebeurtenissen retourneert:

{
    "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- en pull-levering

Event Grid ondersteunt de levering van push- en pull-gebeurtenissen met behulp van HTTP. Met pushlevering definieert u een bestemming in een gebeurtenisabonnement, een webhook of een Azure-service waarnaar Event Grid gebeurtenissen verzendt. Met pull-levering maken abonneetoepassingen verbinding met Event Grid om gebeurtenissen te verbruiken. Pull-levering wordt ondersteund voor onderwerpen in een Event Grid-naamruimte.

Belangrijk

Event Hubs wordt ondersteund als bestemming voor abonnementen op naamruimteonderwerpen. In de komende releases ondersteunen Event Grid-naamruimten alle bestemmingen die momenteel beschikbaar zijn in Event Grid Basic, samen met extra bestemmingen.

Diagram op hoog niveau met pushlevering en pull-levering met het type betrokken resources.

Wanneer gebruikt u pushlevering versus pull-levering

Hier volgen algemene richtlijnen om u te helpen bepalen wanneer u pull- of pushlevering wilt gebruiken.

Pull-levering

  • U hebt volledige controle nodig over wanneer gebeurtenissen moeten worden ontvangen. Uw toepassing is bijvoorbeeld mogelijk niet altijd up-the-time, niet stabiel genoeg of u verwerkt gegevens op bepaalde momenten.
  • U hebt volledige controle nodig over het verbruik van gebeurtenissen. Een downstreamservice of laag in uw consumententoepassing heeft bijvoorbeeld een probleem waardoor u geen gebeurtenissen kunt verwerken. In dat geval kan de pull-leverings-API de consumenten-app een al lees-gebeurtenis vrijgeven aan de broker, zodat deze later kan worden geleverd.
  • U wilt privékoppelingen gebruiken bij het ontvangen van gebeurtenissen, wat alleen mogelijk is met de pull-levering, niet de push-levering.
  • U hebt niet de mogelijkheid om een eindpunt beschikbaar te maken en pushlevering te gebruiken, maar u kunt wel verbinding maken met Event Grid om gebeurtenissen te gebruiken.

Push-levering

  • U wilt constante polling voorkomen om te bepalen dat er een wijziging in de systeemstatus is opgetreden. U gebruikt Event Grid liever om gebeurtenissen naar u te verzenden op het moment dat de statuswijzigingen plaatsvinden.
  • U hebt een toepassing die geen uitgaande oproepen kan uitvoeren. Uw organisatie kan zich bijvoorbeeld zorgen maken over gegevensexfiltratie. Uw toepassing kan echter gebeurtenissen ontvangen via een openbaar eindpunt.

Volgende stappen

In de volgende artikelen vindt u informatie over het gebruik van Event Grid of aanvullende informatie over concepten.