Questo articolo descrive in dettaglio gli eventi specifici di Griglia di eventi che formano la sequenza di risposta di richiesta per diverse operazioni di Gridwich.
Eventi di Gridwich
Gridwich Acknowledgementment e Gridwich Failure sono diversi da altri eventi di Gridwich. In particolare:
- Gridwich Acknowledgementment (ACK) indica che Gridwich ha ricevuto, ma non necessariamente elaborato, la richiesta in una sequenza Request-ACK-Response.
- Ogni operazione ha uno o più eventi di risposta success univoci, ma quasi tutte le operazioni usano lo stesso evento Gridwich Failure per comunicare l'errore.
Eventi di codifica
Avviare un nuovo processo di codifica
L'evento di risposta immediato di ogni codificatore, a parte un ACK, è un evento Failure o Encoding dispatched che indica la corretta accodamento del processo. Gli eventi di notifica dello stato di codifica gestiscono un ulteriore stato di avanzamento.
Notifiche sullo stato di avanzamento della codifica
Tutti i codificatori usano lo stesso set di eventi di stato di notifica dello stato di avanzamento.
Eventi di archiviazione BLOB e contenitori
Contenitori
BLOB
Notifiche BLOB
- Blob created (BLOB creato)
- BLOB eliminato
chiavi Archiviazione
Contesto dell'operazione
Gridwich accetta un oggetto JSON operationContext
come parte dei messaggi di richiesta. In generale, Gridwich restituisce un oggetto corrispondente nei messaggi di risposta e non riguarda la struttura interna o il contenuto specifico dell'oggetto contesto.
L'eccezione è che l'oggetto contesto di risposta può avere proprietà JSON aggiuntive rispetto all'equivalente della richiesta. Queste proprietà aggiuntive sono interne a Gridwich e i loro nomi iniziano sempre con il carattere tilde ~. Le proprietà della richiesta sono sempre presenti nell'oggetto contesto di risposta.
Come nel codice JSON normale, le proprietà dell'oggetto risposta possono essere visualizzate in un ordine diverso rispetto all'oggetto richiesta.
Per altre informazioni sul contesto dell'operazione, vedere Contesto dell'operazione nell'articolo Architettura di Gridwich.
Messaggi di Griglia di eventi
Per altre informazioni sul flusso dei messaggi di richiesta/risposta, vedere il flusso della richiesta di architettura.
Nelle descrizioni degli eventi seguenti i valori delle proprietà JSON sono i soliti tipi stringa, numero o booleano. Le descrizioni usano i tipi di contenuto stringa specifici seguenti. Se la descrizione include "opaco", il contenuto e il formato del valore sono arbitrari.
GUID-string
, come"b621f33d-d01e-0002-7ae5-4008f006664e"
è un valore ID a 16 byte specificato in 36 caratteri (32 cifre esadecimale, più 4 trattini). Si noti la mancanza di parentesi graffe. Il valore non fa distinzione tra maiuscole e minuscole. Questo formato corrisponde al risultato di System.GUID.ToString("D").Topic-string
, come"/subscriptions/5edeadbe-ef64-4022-a3aa-133bfef1d7a2/resourceGroups/gws-shared-rg-sb/providers/Microsoft.EventGrid/topics/gws-gws-egt-sb"
, è una stringa di contenuto opaco.Subject-string
, come"/blobServices/default/containers/telestreamoutput/blobs/db08122195b66be71db9e54ae04c58df/503220533TAGHD23976fps16x990266772067587.mxf"
, è una stringa di contenuto opaco.EventType-string
, come"request.operation.requested"
in genere è una stringa del formato :{"request"|"response"}.operation[.qualifier]
.DataVersion-string
, ad esempio"1.0"
, è un indicatore di controllo delle versioni usato dai processori di messaggi per distinguere diverse evoluzione della stessa operazione. Gridwich richiede questo campo. IlHandlesEvent
metodo determina le versioni che un singolo gestore griglia di eventi può elaborare.URL-string
è un URL assoluto che spesso punta ai log di Application Insights. Queste stringhe sono in genere un URL di firma di accesso condiviso, a causa dei requisiti di autorizzazione di destinazione.StorageURL-string
è un URL assoluto che spesso punta a un BLOB o a un contenitore Archiviazione di Azure. Questa stringa non è in genere un URL di firma di accesso condiviso.StorageURL-SAS-string
è un URL di firma di accesso condiviso assoluto che spesso punta a un BLOB o a un contenitore Archiviazione di Azure.OperationContextObject
, come{ "prodID": 10, "dc": "abc" }
, è un oggetto JSON arbitrario accettato nelle richieste in ingresso e restituito come parte degli eventi di risposta gridwich.Metadata-Dictionary
è un dizionario oggetti JSON da stringa a stringa con le coppie nome-valore che rappresentano Archiviazione di Azure metadati BLOB.Encoder-Context
è un oggetto JSON opaco di proprietà specifiche di un particolare codificatore.
Risposta ACK generica gridwich
Gridwich>Requester usa ResponseAcknowledgeDTO.
{
"id": "GUID-string",
"topic": "Topic-string",
"subject": "Subject-string",
"dataVersion": "DataVersion-string",
"data": {
"operationContext": <OperationContextObject>,
"eventType": "request.blob.metadata.create"
},
"eventType": "response.acknowledge"
}
Il data.eventType
valore stringa è la proprietà di primo livello eventType
dell'evento Request. Ad esempio, per una richiesta di analisi BLOB, il data.eventType
valore stringa èrequest.blob.analysis.create
.
Risposta di errore generica gridwich
Gridwich>Requester usa ResponseFailureDTO.
{
"id": "GUID-string",
"topic": "Topic-string",
"subject": "Subject-string",
"dataVersion": "DataVersion-string",
"data": {
"operationContext": <OperationContextObject>,
"logEventId": 30001,
"logEventMessage": "the message text for eventId 30001",
"logRecordId": "GUID-string",
"logRecordUrl": "URL-string", // AppInsight URL to the logRecordId
"eventHandlerClassName": "string",
"handlerId": "GUID-string"
},
"eventType": "response.failure"
}
L'evento Failure non include il valore della richiesta eventType
originale, ma include il contesto dell'operazione e il nome del gestore che stava elaborando la richiesta. Le log*
proprietà sono correlate alle informazioni sul problema registrate dall'istanza di Application Insights configurata.
Per un set limitato di operazioni, l'oggetto evento Failure differisce in modo significativo rispetto al messaggio precedente. Per altre informazioni, vedere Roll storage keys .For more information, see Roll storage keys.
Il richiedente chiede a Gridwich di inserire alcuni metadati in un BLOB
Il richiedente>Gridwich usa RequestBlobMetadataCreateDTO.
{
"id": "GUID-string",
"topic": "Topic-string",
"subject": "Subject-string",
"dataVersion": "DataVersion-string",
"data": {
"operationContext": <OperationContextObject>,
"blobUri": "StorageURL-string",
"blobMetadata": <Metadata-Dictionary>
},
"eventType": "request.blob.metadata.create"
}
blobMetadata
è un oggetto di proprietà con valori stringa che rappresentano tutte le coppie nome-valore dei metadati blob desiderati.
Gridwich>Requester usa ResponseBlobMetadataSuccessDTO.
{
"id": "GUID-string",
"topic": "Topic-string",
"subject": "Subject-string",
"dataVersion": "DataVersion-string",
"data": {
"operationContext": <OperationContextObject>,
"blobUri": "StorageURL-string",
"blobMetadata": <Metadata-Dictionary>
},
"eventType": "response.blob.metadata.success"
}
Per recuperare in un secondo momento i metadati correnti per un BLOB, vedere la richiesta Di analisi del BLOB .
Il richiedente chiede a Gridwich di eseguire un'analisi di un BLOB tramite MediaInfo
Il richiedente>Gridwich usa RequestBlobAnalysisCreateDTO.
{
"id": "GUID-string",
"topic": "Topic-string",
"subject": "Subject-string",
"dataVersion": "DataVersion-string",
"data": {
"operationContext": <OperationContextObject>,
"blobUri": "StorageURL-string",
"analyzerSpecificData": {
"mediaInfo": {
"commandLineOptions": {
"Complete": "1",
"Output": "JSON"
}
}
}
},
"eventType": "request.blob.analysis.create"
}
Gridwich>Requester usa ResponseBlobAnalysisSuccessSDTO.
{
"id": "GUID-string",
"topic": "Topic-string",
"subject": "Subject-string",
"dataVersion": "DataVersion-string",
"data": {
"operationContext": <OperationContextObject>,
"blobUri": "StorageURL-string",
"blobMetadata": <Metadata-Dictionary>,
"analysisResults": <Analysis-Result-Object>
},
"eventType": "response.blob.analysis.success"
}
Il analysisResults
contenuto dell'oggetto non è specificato. Nel progetto corrente si tratta dell'output MediaInfo.
Il blobMetadata
valore è un > dizionario stringa stringa.oggetto di proprietà con valori stringa che rappresentano tutte le coppie nome-valore dei metadati del BLOB specificato.
Come di consueto con Archiviazione di Azure, i nomi degli elementi di metadati devono essere conformi alle regole di denominazione degli identificatori C#. Per altre informazioni, vedere l'API REST SetBlobMetadata di Azure e le regole di denominazione C#.
Il richiedente chiede a Gridwich di copiare un BLOB in una nuova destinazione
Il richiedente>Gridwich usa RequestBlobCopyDTO.
{
"id": "GUID-string",
"topic": "Topic-string",
"subject": "Subject-string",
"dataVersion": "DataVersion-string",
"data": {
"operationContext": <OperationContextObject>,
"sourceUri": "StorageURL-string",
"destinationUri": "StorageURL-string"
},
"eventType": "request.blob.copy"
}
Gridwich>Requester usa ResponseBlobCopyScheduledDTO.
{
"id": "GUID-string",
"topic": "Topic-string",
"subject": "Subject-string",
"dataVersion": "DataVersion-string",
"data": {
"operationContext": <OperationContextObject>,
"sourceUri": "URL-string",
"blobMetadata": <Metadata-Dictionary>,
"destinationUri": "StorageURL-string"
},
"eventType": "response.blob.copy.scheduled"
}
Gridwich indica al richiedente che ha creato un BLOB
Gridwich potrebbe aver creato il BLOB da qualsiasi origine, ad esempio un risultato di copia, l'arrivo della posta in arrivo o codificare il risultato.
Gridwich>Requester usa ResponseBlobCreatedSuccessDTO.
{
"id": "GUID-string",
"topic": "Topic-string",
"subject": "Subject-string",
"dataVersion": "DataVersion-string",
"data": {
"operationContext": <OperationContextObject>,
"blobUri": "StorageURL-string",
"blobMetadata": <Metadata-Dictionary>
},
"eventType": "response.blob.created.success"
}
Il richiedente chiede a Gridwich di eliminare un BLOB
Il richiedente>Gridwich usa RequestBlobDeleteDTO.
{
"id": "GUID-string",
"topic": "Topic-string",
"subject": "Subject-string",
"dataVersion": "DataVersion-string",
"data": {
"operationContext": <OperationContextObject>,
"blobUri": "StorageURL-string",
},
"eventType": "request.blob.delete"
}
Gridwich>Requester usa ResponseBlobDeleteScheduledDTO.
{
"id": "GUID-string",
"topic": "Topic-string",
"subject": "Subject-string",
"dataVersion": "DataVersion-string",
"data": {
"operationContext": <OperationContextObject>,
"blobUri": "StorageURL-string",
"blobMetadata": <Metadata-Dictionary>
},
"eventType": "response.blob.delete.scheduled"
}
Gridwich informa il richiedente che ha eliminato un BLOB
L'eliminazione del BLOB può provenire da qualsiasi origine, ad esempio una richiesta esplicita da un richiedente o da un risultato di operazioni interne.
Gridwich>Requester usa ResponseBlobDeleteSuccessDTO.
{
"id": "GUID-string",
"topic": "Topic-string",
"subject": "Subject-string",
"dataVersion": "DataVersion-string",
"data": {
"operationContext": <OperationContextObject>,
"blobUri": "StorageURL-string"
},
"eventType": "response.blob.delete.success"
}
Il richiedente chiede a Gridwich di restituire un URL di firma di accesso condiviso del contenuto di scadenza
Il richiedente>Gridwich usa RequestBlobSasUrlCreateDTO.
{
"id": "GUID-string",
"topic": "Topic-string",
"subject": "Subject-string",
"dataVersion": "DataVersion-string",
"data": {
"operationContext": <OperationContextObject>,
"blobUri": "StorageURL-string",
"secToLive": 1200
},
"eventType": "request.blob.sas-url.create"
}
Gridwich>Requester usa ResponseBlobSasUrlSuccessDTO.
{
"id": "GUID-string",
"topic": "Topic-string",
"subject": "Subject-string",
"dataVersion": "DataVersion-string",
"data": {
"operationContext": <OperationContextObject>,
"sasUrl": "StorageURL-SAS-string"
},
"eventType": "response.blob.sas-url.success"
}
Il richiedente chiede a Gridwich di codificare tramite il flusso di lavoro CloudPort
Il richiedente>Gridwich usa RequestCloudPortEncodeCreateDTO.
{
"id": "GUID-string",
"topic": "Topic-string",
"subject": "Subject-string",
"dataVersion": "DataVersion-string",
"data": {
"operationContext": <OperationContextObject>,
"inputs": [
{"blobUri": "StorageURL-string" }
],
"outputContainer": "https://<storageaccountname>.blob.core.windows.net/<containername>/",
"workflowName": "TestWorkflow2",
"parameters": [ { "prop1": "value1" } ],
"secToLive": 18000
},
"eventType": "request.encode.cloudport.create",
}
Il richiedente chiede a Gridwich di codificare tramite Flip
Il richiedente>Gridwich usa RequestFlipEncodeCreateDTO.
{
"id": "GUID-string",
"topic": "Topic-string",
"subject": "Subject-string",
"dataVersion": "DataVersion-string",
"data": {
"operationContext": <OperationContextObject>,
"inputs": [
{"blobUri": "StorageURL-string" }
],
"outputContainer": "StorageURL-string", // of the Storage container
"factoryName": "gws-dev-flip",
"profiles": "h264",
"parameters": [ { "prop1": "value1" } ],
"secToLive": 18000
},
"eventType": "request.encode.flip.create"
}
Esempio di RequestFlipEncodeCreateDTO
{
"id": "GUID-string",
"topic": "Topic-string",
"subject": "Subject-string",
"dataVersion": "DataVersion-string",
"data": {
"operationContext": { "progId": 1234 },
"inputs": [
{
"blobUri": "https://gws-sa1.blob.core.windows.net/Vid0001Container/input.mp4"
}
],
"outputContainer": "https://gws-sa22out.blob.core.windows.net/Out0004/",
"factoryName": "gws-dev-flip",
"profiles": "h264",
"parameters": [ { "someProperty1": "someValue1" } ],
"secToLive": 18000
},
"eventType": "request.encode.flip.create"
}
Risposta di invio riuscita della richiesta comune dei codificatori Gridwich
Gridwich>Requester usa ResponseEncodeDispatchedDTO.
{
"id": "GUID-string",
"topic": "Topic-string",
"subject": "Subject-string",
"dataVersion": "DataVersion-string",
"data": {
"operationContext": <OperationContextObject>,
"encoderContext": <EncoderContext>,
"workflowJobName": "CloudPort or Flip assigned job name for workflow instance."
},
"eventType": "response.encode.<encodername>.dispatched"
}
è <encodername>
uno di cloudport
o flip
.
Messaggi di stato asincroni del codificatore Gridwich
I codificatori Gridwich generano quattro tipi di eventi durante o alla fine della codifica:
- Pianificati
- in lavorazione
- Riuscita
- Annullati
Un errore di richiesta di codifica genera un evento Gridwich Failure.
Stato di codifica pianificato
Gridwich>Requester usa ResponseEncodeScheduledDTO.
{
"id": "GUID-string",
"topic": "Topic-string",
"subject": "Subject-string",
"dataVersion": "DataVersion-string",
"data": {
"operationContext": <OperationContextObject>,
"encoderContext": <EncoderContext>,
"workflowJobName": "CloudPort or Flip assigned job name for workflow instance."
},
"eventType": "response.encode.<encodername>.scheduled"
}
Elaborazione dello stato di codifica
Gridwich>Requester usa ResponseEncodeProcessingDTO.
{
"id": "GUID-string",
"topic": "Topic-string",
"subject": "Subject-string",
"dataVersion": "DataVersion-string",
"data": {
"operationContext": <OperationContextObject>,
"encoderContext": <EncoderContext>,
"workflowJobName": "CloudPort or Flip assigned job name for workflow instance.",
"currentStatus": "string",
"percentComplete": 50,
},
"eventType": "response.encode.<encodername>.processing"
}
Esito positivo dello stato di codifica
Gridwich>Requester usa ResponseEncodeSuccessDTO.
{
"id": "GUID-string",
"topic": "Topic-string",
"subject": "Subject-string",
"dataVersion": "DataVersion-string",
"data": {
"operationContext": <OperationContextObject>,,
"encoderContext": <EncoderContext>,
"workflowJobName": "CloudPort or Flip assigned job name for workflow instance.",
"outputs":[
{ "blobUri": "StorageURL-string" }
]
},
"eventType": "response.encode.<encodername>.success"
}
Stato di codifica annullato
Gridwich>Requester usa ResponseEncodeCanceledDTO.
{
"id": "GUID-string",
"topic": "Topic-string",
"subject": "Subject-string",
"dataVersion": "DataVersion-string",
"data": {
"operationContext": <OperationContextObject>,
"encoderContext": <EncoderContext>,
"workflowJobName": "CloudPort or Flip assigned job name for workflow instance."
},
"eventType": "response.encode.<encodername>.canceled"
}
Il richiedente chiede a Gridwich di modificare il livello di archiviazione di un BLOB
Il richiedente>Gridwich usa RequestBlobTierChangeDTO.
{
"id": "GUID-string",
"topic": "Topic-string",
"subject": "Subject-string",
"dataVersion": "DataVersion-string",
"data": {
"operationContext": <OperationContextObject>,
"blobUri": "StorageURL-string",
"accessTier": "string",
"rehydratePriority": "string"
},
"eventType": "request.blob.tier.change"
}
- La
accessTier
proprietà èHot
,Cool
oArchive
. - La
rehydratePriority
proprietà èStandard
oHigh
.
Gridwich>Requester usa ResponseBlobTierChangeSuccessDTO
{
"id": "GUID-string",
"topic": "Topic-string",
"subject": "Subject-string",
"dataVersion": "DataVersion-string",
"data": {
"operationContext": <OperationContextObject>,
"blobUri": "StorageURL-string",
"accessTier": "string",
"rehydratePriority": "string"
},
"eventType":"response.blob.tier.success"
}
Il richiedente chiede a Gridwich di creare un contenitore BLOB
La richiesta fornisce il nome dell'account e del contenitore Archiviazione.
Il richiedente>Gridwich usa RequestContainerCreateDTO.
{
"id": "GUID-string",
"topic": "Topic-string",
"subject": "Subject-string",
"dataVersion": "DataVersion-string",
"data": {
"operationContext": <OperationContextObject>,
"storageAccountName": "string", // e.g. mySA1
"containerName": "string" // e.g. mycontainer
},
"eventType": "request.blob.container.create"
}
Gridwich>Requester usa ResponseContainerCreatedSuccessSDTO.
{
"id": "GUID-string",
"topic": "Topic-string",
"subject": "Subject-string",
"dataVersion": "DataVersion-string",
"data": {
"operationContext": <OperationContextObject>,
"storageAccountName": "string",
"containerName": "string"
},
"eventType": "response.blob.container.create.success"
}
Il richiedente chiede a Gridwich di eliminare un contenitore BLOB
La richiesta fornisce il nome dell'account e del contenitore Archiviazione.
Il richiedente>Gridwich usa RequestContainerDeleteDTO.
{
"id": "GUID-string",
"topic": "Topic-string",
"subject": "Subject-string",
"dataVersion": "DataVersion-string",
"data": {
"operationContext": <OperationContextObject>,
"storageAccountName": "string",
"containerName": "string"
},
"eventType": "request.blob.container.delete"
}
Gridwich>Requester usa ResponseContainerDeleteSuccessDTO.
{
"id": "GUID-string",
"topic": "Topic-string",
"subject": "Subject-string",
"dataVersion": "DataVersion-string",
"data": {
"operationContext": <OperationContextObject>,
"storageAccountName": "string",
"containerName": "string"
},
"eventType": "response.blob.container.delete.success"
}
Il richiedente chiede a Gridwich di modificare l'accesso pubblico di un contenitore
La richiesta fornisce il nome del contenitore e un accessType
oggetto , Blob
BlobContainer
o None
.
Il richiedente>Gridwich usa RequestContainerAccessChangeDTO.
{
"id": "GUID-string",
"topic": "Topic-string",
"subject": "Subject-string",
"dataVersion": "DataVersion-string",
"data": {
"operationContext": <OperationContextObject>,
"storageAccountName": "string",
"containerName": "string",
"accessType": "string"
},
"eventType": "request.blob.container.access.change"
}
Gridwich>Requester usa ResponseContainerAccessChangeSuccessDTO.
{
"id": "GUID-string",
"topic": "Topic-string",
"subject": "Subject-string",
"dataVersion": "DataVersion-string",
"data": {
"operationContext": <OperationContextObject>,
"storageAccountName": "string",
"containerName": "string",
"accessType": "string"
},
"eventType": "response.blob.container.access.change.success"
}
Il richiedente chiede a Gridwich di ruotare su una nuova chiave di archiviazione
La Rollkey
famiglia di eventi è diversa da quella di Gridwich, mentre la richiesta accetta un operationContext
valore, nessuno degli eventi di risposta lo include.
Gli eventi di errore non sono del tipo di evento response.failure normale, ma hanno invece un valore di response.rollkey.storage.failure
tipo .
Eventi response.rollkey.storage.failure
di errore:
- Non includere alcuna delle normali proprietà dei dati delle informazioni
log
di registrazione degli eventi di errore. - Contiene una proprietà di dati aggiuntiva denominata
error
che contiene il testo del messaggio di errore. Altri errori di Gridwich contengono il testo nella proprietà deilogEventMessage
dati.
Questi punti riflettono lo stato corrente dell'app per la logica di Azure che esegue l'operazione RollKey. La definizione dell'app per la logica si trova nel file infrastructure/terraform/keyroller/main.tf Terraform.
keyName
Corrisponde al nome della chiave definito Archiviazione di Azure nell'operazione Get Keys.
Requester>Gridwich
{
"id": "GUID-string",
"topic": "Topic-string",
"subject": "Subject-string",
"dataVersion": "DataVersion-string",
"data": {
"operationContext": <OperationContextObject>,
"account": "storageAccountName",
"keyName": "key1"
},
"eventType": "request.rollkey.storage"
}
Richiedente Gridwich>
Operazione riuscita:
{ "id": "GUID-string", "topic": "Topic-string", "subject": "Subject-string", "dataVersion": "DataVersion-string", "data": { "account": "storageAccountName", "keyName": "key1" }, "eventType": "response.rollkey.storage.success" }
Operazione non riuscita:
{ "id": "GUID-string", "topic": "Topic-string", "subject": "Subject-string", "dataVersion": "1.0", "data": { "account": "storageAccountName1", "keyName": "key1", "error": "error message text" }, "eventType": "response.rollkey.storage.failure" }
I risultati degli errori per questa operazione non vengono completati come normali errori di Gridwich.
Passaggi successivi
Documentazione sui prodotti:
- Sistema di supporti cloud Gridwich
- Che cos'è l'archiviazione BLOB di Azure?
- Cosa sono le app per la logica di Azure?
Moduli di Microsoft Learn: