Recapito pull con HTTP

Questo articolo si basa sull'articolo Che cos'è Griglia di eventi di Azure? e sui concetti di Griglia di eventi per fornire informazioni essenziali prima di iniziare a usare il recapito pull di Griglia di eventi su HTTP. Vengono illustrati i concetti fondamentali, i modelli di risorse e le modalità di recapito dei messaggi supportati. Alla fine di questo documento sono disponibili collegamenti utili agli articoli che illustrano come usare Griglia di eventi e agli articoli che offrono informazioni concettuali approfondite.

Nota

Questo documento illustra come iniziare a usare le funzionalità di Griglia di eventi che usano il protocollo HTTP. Questo articolo è adatto agli utenti che devono integrare applicazioni nel cloud. Se è necessario comunicare i dati dei dispositivi IoT, vedere Panoramica della funzionalità Broker MQTT in Griglia di eventi di Azure.

CloudEvents

Gli argomenti dello spazio dei nomi di Griglia di eventi accettano eventi conformi alla specifica open standard cloudEvents 1.0 di CloudEvents 1.0 di Cloud Native Computing Foundation (CLOUD Native Computing Foundation) con formato JSON.

Per altre informazioni, vedere i concetti relativi a CloudEvents.

CloudEvents con modalità tenda s

La specifica CloudEvents definisce tre con modalità tenda che è possibile usare: binario, strutturato e in batch.

Importante

Con qualsiasi con modalità tenda è possibile scambiare testo (JSON, text/*e così via) o dati di eventi con codifica binaria. La con modalità tenda binaria non viene usata esclusivamente per l'invio di dati binari.

I con modalità tenda non riguardano la codifica usata, il file binario o il testo, ma il modo in cui i dati dell'evento e i relativi metadati vengono descritti e scambiati. La con struttura strutturata modalità tenda usa una singola struttura, ad esempio un oggetto JSON, in cui sia gli attributi di contesto che i dati dell'evento si trovano insieme nel payload HTTP. La con modalità tenda binaria separa gli attributi di contesto, di cui viene eseguito il mapping alle intestazioni HTTP e ai dati dell'evento, ovvero il payload HTTP codificato in base al valore del tipo di supporto in Content-Type.

Per altre informazioni, vedere CloudEvents con modalità tenda s.

Messaggi ed eventi

Un CloudEvent in genere contiene dati di evento che annunciano un'occorrenza in un sistema, ovvero una modifica dello stato del sistema. Tuttavia, è possibile trasmettere qualsiasi tipo di dati quando si usano CloudEvents. Ad esempio, è possibile usare il formato di scambio CloudEvents per inviare un messaggio di comando per richiedere un'azione a un'applicazione downstream. Un altro esempio è il routing dei messaggi dal broker MQTT di Griglia di eventi a un argomento. In questo scenario si instrada un messaggio MQTT incapsulato in una busta CloudEvents.

Recapito pull

Con il recapito pull, l'applicazione si connette a Griglia di eventi per leggere CloudEvent usando la semantica simile alla coda.

Il recapito pull offre questi vantaggi a consumo di eventi:

  • Usare gli eventi in base al proprio ritmo, su larga scala o a una velocità di ingresso supportata dall'applicazione.

  • Utilizzare gli eventi al momento della propria scelta. Ad esempio, in base ai requisiti aziendali, i messaggi vengono elaborati di notte.

  • Utilizzare eventi tramite un collegamento privato in modo che i dati usino spazio IP privato.

Nota

  • Gli spazi dei nomi forniscono un modello di risorse più semplice con un singolo tipo di argomento. Attualmente Griglia di eventi supporta la pubblicazione di eventi dell'applicazione personalizzati tramite argomenti dello spazio dei nomi. Non è possibile utilizzare gli eventi dei servizi di Azure o dei sistemi SaaS partner usando gli argomenti dello spazio dei nomi. Non è inoltre possibile creare argomenti di sistema, argomenti di dominio o argomenti partner in uno spazio dei nomi.
  • Gli argomenti dello spazio dei nomi supportano il formato JSON CloudEvents.

Sottoscrizioni di eventi della coda

Quando si ricevono eventi o si usano operazioni che gestiscono lo stato dell'evento, un'applicazione specifica un endpoint HTTP dello spazio dei nomi, un nome di argomento e il nome di una sottoscrizione di eventi della coda . Una sottoscrizione di eventi della coda ha il valore deliveryMode impostato su "queue". Le sottoscrizioni di eventi della coda vengono usate per utilizzare gli eventi usando l'API di recapito pull. Per altre informazioni su come creare queste risorse, vedere Creare spazi dei nomi, argomenti e sottoscrizioni di eventi.

Si usa una sottoscrizione di eventi per definire i criteri di filtro per gli eventi e in questo modo si definisce in modo efficace il set di eventi disponibili per l'utilizzo tramite tale sottoscrizione di eventi. Una o più applicazioni sottoscrittori (consumer) possono connettersi allo stesso endpoint dello spazio dei nomi e usare lo stesso argomento e la stessa sottoscrizione di eventi.

Diagramma generale di un server di pubblicazione e di un consumer che usa una sottoscrizione di eventi. Il consumer usa il recapito pull.

Operazioni di recapito pull

L'applicazione usa le operazioni seguenti quando si usa il recapito pull.

  • Un'operazione di ricezione viene usata per leggere uno o più eventi usando una singola richiesta a Griglia di eventi. Per impostazione predefinita, il broker attende fino a 60 secondi prima che gli eventi diventino disponibili. Ad esempio, gli eventi diventano disponibili per il recapito quando vengono pubblicati per la prima volta. Una richiesta di ricezione riuscita restituisce zero o più eventi. Se gli eventi sono disponibili, restituisce il maggior numero possibile di eventi disponibili fino al numero di eventi richiesto. Griglia di eventi restituisce anche un token di blocco per ogni evento letto.
  • Un token di blocco è un tipo di handle che identifica un evento che è possibile usare per controllarne lo stato.
  • Una volta che un'applicazione consumer riceve un evento e la elabora, riconosce tale evento. Questa operazione indica a Griglia di eventi di eliminare l'evento in modo che non venga recapitato a un altro client. L'applicazione consumer riconosce uno o più token con una singola richiesta specificando i token di blocco prima della scadenza.

In altre occasioni, l'applicazione consumer potrebbe voler rilasciare o rifiutare gli eventi.

  • L'applicazione consumer rilascia un evento ricevuto per segnalare a Griglia di eventi che non è pronto per elaborare tale evento e renderlo disponibile per la fase di rollforward. A tale scopo, chiamare l'operazione di rilascio con i token di blocco che identificano gli eventi da restituire a Griglia di eventi. L'applicazione può controllare se l'evento deve essere rilasciato immediatamente o se deve essere usato un ritardo prima che l'evento sia disponibile per la fase di rollforward.

  • È possibile scegliere di rifiutare un evento se è presente una condizione, possibilmente permanente, che impedisce all'applicazione consumer di elaborare l'evento. Ad esempio, un messaggio in formato non valido può essere rifiutato perché non può essere analizzato correttamente. Gli eventi rifiutati vengono inviati tramite messaggi non recapitabili, se è disponibile una destinazione di messaggi non recapitabili. In caso contrario, vengono eliminati.

Ambito in cui vengono eseguite le operazioni di recapito pull

Quando si richiama un'operazione di ricezione, conferma, rilascio, rifiuto o rinnovo del blocco , tali azioni vengono eseguite nel contesto della sottoscrizione di eventi. Ad esempio, se si riconosce un evento, tale evento non è più disponibile tramite la sottoscrizione di eventi usata quando si chiama l'azione di conferma . Un'altra sottoscrizione di eventi potrebbe comunque avere lo stesso evento disponibile. Ciò è dovuto al fatto che una sottoscrizione di eventi ottiene una copia degli eventi pubblicati. Tali copie di eventi sono effettivamente distinte l'una dall'altra nelle sottoscrizioni di eventi. Ogni evento ha un proprio stato indipendente da altri eventi.

Forma dei dati durante la ricezione di eventi tramite il recapito pull

Quando si distribuisce eventi tramite il recapito pull, Griglia di eventi include una matrice di oggetti che a sua volta include gli oggetti event e brokerProperties . Il valore della proprietà dell'evento è cloudEvent fornito in struttura con modalità tenda. L'oggetto brokerProperties contiene il token di blocco associato al cloudEvent recapitato. L'oggetto JSON seguente è una risposta di esempio da un'operazione di ricezione che restituisce due eventi:

{
    "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
                }
            }
        }
    ]
}

Recapito push e pull

Griglia di eventi supporta il recapito di eventi push e pull tramite HTTP. Con il recapito push si definisce una destinazione in una sottoscrizione di eventi, un webhook o un servizio di Azure a cui Griglia di eventi invia eventi. Con il recapito pull, le applicazioni sottoscrittori si connettono a Griglia di eventi per utilizzare gli eventi. Il recapito pull è supportato per gli argomenti in uno spazio dei nomi di Griglia di eventi.

Importante

Hub eventi è supportato come destinazione per le sottoscrizioni agli argomenti dello spazio dei nomi. Nelle prossime versioni, gli spazi dei nomi di Griglia di eventi supporteranno tutte le destinazioni attualmente disponibili in Griglia di eventi Basic insieme a destinazioni aggiuntive.

Diagramma generale che mostra il recapito push e il recapito pull con il tipo di risorse coinvolte.

Quando usare il recapito push e il recapito pull

Di seguito sono riportate linee guida generali che consentono di decidere quando usare il recapito pull o push.

Recapito pull

  • È necessario il controllo completo su quando ricevere gli eventi. Ad esempio, l'applicazione potrebbe non essere sempre aggiornata, non abbastanza stabile o elaborare i dati in determinati momenti.
  • È necessario il controllo completo sull'utilizzo degli eventi. Ad esempio, un servizio downstream o un livello nell'applicazione consumer presenta un problema che impedisce l'elaborazione di eventi. In tal caso, l'API di recapito pull consente all'app consumer di rilasciare un evento già letto al broker in modo che possa essere recapitato in un secondo momento.
  • Si vogliono usare collegamenti privati quando si ricevono eventi, che è possibile solo con il recapito pull, non con il recapito push.
  • Non è possibile esporre un endpoint e usare il recapito push, ma è possibile connettersi a Griglia di eventi per utilizzare gli eventi.

Recapito push

  • Si vuole evitare il polling costante per determinare che si è verificata una modifica dello stato del sistema. È invece possibile usare Griglia di eventi per inviare eventi al momento in cui si verificano modifiche dello stato.
  • Si dispone di un'applicazione che non può effettuare chiamate in uscita. Ad esempio, l'organizzazione potrebbe preoccuparsi dell'esfiltrazione dei dati. Tuttavia, l'applicazione può ricevere eventi tramite un endpoint pubblico.

Passaggi successivi

Gli articoli seguenti forniscono informazioni su come usare Griglia di eventi o fornire informazioni aggiuntive sui concetti.