Quando si utilizzano i flussi di aggregazione, si potrebbero verificare delle eccezioni. Questo argomento spiega come gestirle.
Prima di iniziare:
Per completare questa attività, è necessario completare prima quelle che seguono:
Se viene rilevato un errore nel corso dell'elaborazione di un nodo AggregateReply, il broker genera un'eccezione. Anche un altro nodo nel flusso di messaggi potrebbe generare un'eccezione utilizzando l'istruzione ESQL THROW. In entrambi i casi, quando viene generata un'eccezione, questa viene rilevata in due ubicazioni:
La seguente tabella elenca gli eventi e spiega cosa accade ad un'eccezione generata nel corso dell'elaborazione del nodo AggregateReply.
Evento | Messaggio trasmesso | Terminale di Output | Eccezione rilevata nel |
---|---|---|---|
Al nodo di input arriva una replica prevista e viene trasmessa al terminale In del nodo AggregateReply. Si tratta dell'ultima replica necessaria affinché un'aggregazione sia completa. | Il messaggio di replica aggregato che contiene tutte le repliche | Out | Nodo di input |
Al nodo di input arriva una replica non prevista e viene trasmessa al nodo AggregateReply. Essa non viene riconosciuta come replica valida e la proprietà Timeout messaggio sconosciuto è impostata su 0. | Messaggio ricevuto | Unknown | Nodo di input |
Si verifica un timeout poiché tutte le repliche per un'aggregazione non sono ancora arrivate. | Il messaggio di replica aggregato che contiene tutte le repliche che sono state ricevute | Timeout | Nodo AggregateReply |
Si verifica un timeout sconosciuto poiché un messaggio conservato non è stato identificato come replica valida. | Messaggio conservato | Unknown | Nodo AggregateReply |
Si stabilisce che un'aggregazione è completa in un tempo diverso da quello in cui è arrivata l'ultima replica. | Il messaggio di replica aggregato che contiene tutte le repliche | Out | Nodo AggregateReply |
Se si desidera gestire gli errori che si verificano nei flussi di aggregazione, è necessario rilevare tali eccezioni in tutte le istanze di ciascuno di questi nodi nel flusso di messaggi. Procedere nel modo seguente:
L'esempio seguente di ESQL mostra come aggiungere un'intestazione MQMD e trasmettere le repliche ricevute dal nodo AggregateReply:
-- Aggiungere MQMD SET OutputRoot.MQMD.Version = 2; . -- Includere le repliche consolidate nel messaggio di output SET OutputRoot.XML.Data.Parsed = InputRoot.ComIbmAggregateReplyBody; .
Se si desidera trasmettere le informazioni sull'eccezione nel messaggio di output, è necessario anche impostare la proprietà Modalità di calcolo del nodo Compute su un valore che include Eccezione.