Raccolte di messaggi

Una raccolta messaggi è un singolo messaggio contenente più messaggi derivati da una o più origini.

È possibile utilizzare un nodo Collector per raggruppare i messaggi provenienti da una o più origini in una raccolta di messaggi, in modo che possano essere elaborati insieme dai nodi downstream. È anche possibile creare manualmente una raccolta di messaggi utilizzando un nodo Compute .

Struttura di una raccolta di messaggi

Una struttura ad albero di raccolta dei messaggi contiene strutture ad albero secondarie che contengono il contenuto dei singoli messaggi ricevuti dal nodo Collector . L'assemblaggio del messaggio propagato dal nodo Collector ad altri nodi nel flusso di messaggi contiene i seguenti quattro componenti:
  • Messaggio (incluse intestazioni di trasporto)
  • Ambiente locale
  • Ambiente globale
  • Elenco di eccezioni
La seguente figura mostra un esempio della struttura ad albero del messaggio di una raccolta di messaggi.
Questo è un diagramma della struttura ad albero per una raccolta di messaggi. Il suo contenuto è descritto nel testo circostante.
La raccolta di messaggi in questo esempio contiene due messaggi: uno ricevuto da IBM® MQ e uno proveniente da una sorgente di input file.

Una raccolta di messaggi ha un'intestazione Proprietà ed un elemento singolo di cartella denominato Raccolta. Una raccolta di messaggi può anche avere zero o più attributi aventi coppie nome-valore; il nome di un attributo deve essere univoco all'interno di una raccolta di messaggi. Questi sono visualizzati come <name> / <value> nella figura. Un attributo standard per una raccolta di messaggi è un attributi denominato CollectionName. Se si utilizza un nodo Collector per generare una raccolta di messaggi, il valore per il nome della raccolta viene generato in base ai valori configurati nel nodo. L'attributo del nome della raccolta non è obbligatorio.

Nella cartella Raccolta della struttura ad albero della raccolta di messaggi sono presenti cartelle, mostrate come <folder name> nel diagramma. Queste cartelle contengono la struttura ad albero del messaggio per ciascun messaggio aggiunto alla raccolta. Ciascuna di queste cartelle ha un nome, ma questo nome non deve necessariamente essere univoco nella raccolta di messaggi. Il valore per <folder name> deriva dall'origine del messaggio di input.

Le raccolte nidificare di messaggi non sono consentite. Non è quindi possibile utilizzare una raccolta di messaggi come messaggio di origine per un'altra raccolta di messaggi. Ad esempio, se si tenta di passare una raccolta di messaggi ad un terminale di input su un nodo Collector , viene generato un errore.

Le strutture ad albero LocalEnvironment, Environment ed ExceptionList non sono incluse nella struttura ma vengono invece portate separatamente come parte dell'assemblaggio del messaggio. Non esiste un concetto di LocalEnvironment associato ad ogni messaggio all'interno di una raccolta.

Creazione di una raccolta di messaggi utilizzando un nodo Collector

È possibile utilizzare il nodo Collector per creare più richieste sincrone o asincrone in parallelo. I risultati di queste richieste possono essere unificate nel proseguimento dell'elaborazione, se richiesto. Questo comportamento è diverso da quello dei nodi di aggregazione in cui esiste un modello fisso di richiesta/risposta e dove i messaggi di risposta vengono raggruppati da un id richiesta. Al contrario, per il nodo collector non è necessaria una fase iniziale di fan-out ed è in grado di raggruppare messaggi di input non correlati, mettendo in relazione i relativi contenuti. È possibile configurare terminali di input dinamici su un nodo Collector per ricevere messaggi da origini differenti. È inoltre possibile configurare le proprietà sul nodo Collector , noto come gestori eventi, per determinare il modo in cui i messaggi vengono aggiunti a una raccolta di messaggi e quando una raccolta di messaggi è completa.

Elaborazione di una raccolta di messaggi

Una raccolta di messaggi è supportata solo dai nodi seguenti:
  • Calcolo
  • JavaCompute
  • CICSRequest
Gli altri nodi genererebbero degli errori se ricevessero una raccolta di messaggi.
È possibile utilizzare espressioni ESQL o XPath per accedere al contenuto dei messaggi in una raccolta di messaggi facendo riferimento ai nomi delle cartelle preceduti da InputRoot.Collection. Per accedere al contenuto di un messaggio in una raccolta di messaggi utilizzando ESQL è possibile utilizzare un codice simile all'ESQL seguente:
InputRoot.Collection.folder1.XMLNSC
In XPath, l'elemento root è il corpo del messaggio. L'elemento root per una raccolta di messaggi è l'elemento Collection. Quindi, per accedere al contenuto di un messaggio in una raccolta di messaggi utilizzando XPath, è necessario utilizzare un'espressione simile al seguente XPath:
/folder1/XMLNSC
Esempi di espressioni XPath che è possibile utilizzare per accedere alla raccolta di messaggi:
  • /*: restituisce un elenco di tutti i messaggi contenuti nella raccolta di messaggi.
  • /@*: restituisce un elenco di tutti gli attributi della raccolta di messaggi.
  • /@Name: restituisce il valore dell'attributo Name.

Potrebbe non essere possibile determinare l'ordine dei messaggi all'interno di una raccolta. Se si genera una raccolta di messaggi utilizzando il nodo Collector , i messaggi vengono disposti nello stesso ordine in cui sono arrivati al nodo.