Creazione del flusso fan-in di aggregazione

Il flusso fan-in di aggregazione riceve le risposte ai messaggi di richiesta inviati dal flusso fan-out e crea un messaggio di risposta combinato che contiene tutte le risposte ricevute.

Prima di iniziare:

Per completare questa attività, è necessario completare prima quella che segue:

Si consiglia di leggere anche la panoramica relativa all'Aggregazione del flusso di messaggi, prima di completare questa attività.

A seconda che il flusso fan-out sia transazionale e, in caso contrario, in base ai valori di timeout specificati, il messaggio di risposta combinato potrebbe essere generato prima che siano state ricevute tutte le repliche dal flusso fan-in. Consultare, Creazione del flusso fan-out di aggregazione per ulteriori informazioni su questo argomento.

E' possibile includere il flusso fan-out e fan-in nello stesso flusso di messaggi. Tuttavia si consiglia di creare due flussi separati. Non distribuire più copie dello stesso flusso fan-in nello stesso gruppo di esecuzione o in gruppi diversi. Per ulteriori informazioni sui vantaggi di configurare flussi di messaggi separati, consultare Associazione dei flussi di aggregazione fan-out e fan-in.

Per esaminare un esempio di flusso fan-in, consultare l'Esempio Prenotazioni per compagnie aeree fornito con WebSphere Message Broker.

Per creare il flusso fan-in:

  1. Passare alla Prospettiva Sviluppo dell'applicazione broker.
  2. Creare un flusso di messaggi per fornire l'elaborazione del fan-in.
  3. Aggiungere i seguenti nodi nella vista dell'editor, quindi configurarli e connetterli come descritto:
    Nodo di input
    Il nodo di input riceve le risposte a più messaggi di richiesta generati dal flusso fan-out.

    Si deve trattare di un nodo di input che supporta il modello richiesta/replica, come ad esempio un nodo MQInput o una combinazione di questi nodi (a seconda dei requisiti delle applicazioni che inviano tali risposte). La risposta ricevuta da ogni nodo di input deve essere inviata attraverso lo stesso protocollo della richiesta a cui corrisponde (ad esempio, se si include un nodo MQOutput nel flusso fan-out, è necessario che la risposta a tale richiesta sia ricevuta da un nodo MQInput in questo flusso).

    1. Fare clic con il tasto destro del mouse sul nodo di input e fare clic su Proprietà.
    2. Specificare l'origine dei messaggi di input per questo nodo. Ad esempio, specificare il nome di una coda WebSphere MQ nella proprietà Base Nome coda da cui il nodo MQInput richiama i messaggi.
    3. Facoltativo: specificare i valori per qualsiasi altra proprietà che si desideri configurare per questo nodo.
    4. Connettere il terminale out del nodo di input al terminale in di un nodo AggregateReply.

      Questa è la configurazione più semplice; se si ritiene opportuno, è possibile includere altri nodi tra il nodo di input e il nodo AggregateReply. Ad esempio, si potrebbe voler memorizzare le repliche ai fini della revisione contabile (in un nodo Warehouse).

    Nota: si consiglia di avere un nodo di input che riceva tutti i messaggi di risposta di aggregazione all'inizio del flusso fan-in come descritto sopra. L'utilizzo di un nodo invece di più nodi assicura che nessun thread specifico del nodo di input di replica arrivi a completare l'aggregazione e l'esecuzione del flusso di messaggi, mentre gli altri inviano i propri messaggi di risposta al nodo Aggregate Reply, che diventa di conseguenza idoneo al timeout. L'utilizzo di un singolo nodo di input crea un'elaborazione più sequenziale delle repliche per ogni aggregazione che può essere successivamente aumentata utilizzando istanze aggiuntive per fornire maggiore capacità di elaborazione.
    Nodo AggregateReply
    Il nodo AggregateReply riceve le risposte in entrata dal nodo di input attraverso il proprio terminale in. Ogni messaggio di replica ricevuto dal nodo AggregateReply è memorizzato in modo permanente nel database del broker.

    Una volta raccolte tutte le repliche per un particolare gruppo di richieste di aggregazione, il nodo AggregateReply crea un messaggio di replica aggregato e lo trasmette tramite il terminale out.

    1. Fare clic con il tasto destro del mouse sul nodo AggregateReply e fare clic su Proprietà.
    2. Impostare la proprietà Nome aggregazione del nodo AggregateReply per identificare questa aggregazione. Impostare tale valore sullo stesso valore impostato per la proprietà Nome aggregazione nel nodo AggregateControl corrispondente nel flusso fan-out.
    3. Facoltativo: impostare un valore per Timeout messaggio sconosciuto se si desidera conservare un messaggio non riconosciuto prima di trasmetterlo al terminale unknown. Se si stanno utilizzando flussi fan-out e fan-in separati, si potrebbe impostare questo valore su un numero diverso da zero in caso di ritardi nell'arrivo del messaggio di controllo.
    4. Facoltativo: connettere il terminale unknown ad un altro nodo o sequenza di nodi se si desidera gestire esplicitamente i messaggi non riconosciuti. Se non si connette questo terminale ad un altro nodo nel flusso di messaggi, i messaggi trasmessi tramite questo terminale vengono eliminati.
    5. Facoltativo: se è stato specificato un valore di timeout per questa aggregazione nel nodo AggregateControl, connettere il terminale timeout ad un altro nodo o sequenza di nodi se si desidera gestire esplicitamente i timeout che scadono prima che tutte le repliche siano state ricevute. Le repliche aggregate parzialmente complete sono inviate al terminale timeout se il timer scade. Se non si connette questo terminale ad un altro nodo nel flusso di messaggi, i messaggi trasmessi tramite questo terminale vengono eliminati.
    6. Facoltativo: specificare i valori per qualsiasi altra proprietà che si desideri configurare per questo nodo.
    7. Connettere il terminale out del nodo AggregateReply al terminale in di un nodo Compute.
    Nota: il terminale Control del nodo AggregateReply è stato considerato obsoleto nella Versione 6.0 e, per impostazione predefinita, tutte le connessioni a questo terminale (dirette o indirette), verranno ignorate. Questo serve a rendere massima l'efficienza dei flussi di aggregazione e non compromette l'affidabilità delle aggregazioni. E' la configurazione ottimale.

    Tuttavia, se si desidera che il nodo AggregateReply riceva sul proprio terminale control il messaggio di controllo che era stato inviato dal nodo AggregateControl corrispondente sul flusso fan-out, è necessario effettuare le connessioni richieste, come descritto in Creazione del flusso fan-out di aggregazione. E' consigliabile che il percorso dal nodo AggregateReply al nodo di output sia il più diretto possibile. Mantenendo il flusso fan-in breve, le prestazioni delle aggregazioni ne trarranno vantaggio. Non modificare il contenuto di questo messaggio di controllo.

    In aggiunta, perché il terminale Control e le connessioni a partire da esso siano riconosciuti, è necessario abilitare la variabile di ambiente MQSI_AGGR_COMPAT_MODE. Tuttavia, la scelta di questa opzione ha delle implicazioni relative alle prestazioni e al funzionamento delle aggregazioni di messaggi. Per una descrizione completa di queste implicazioni e della variabile di ambiente, consultare Utilizzo dei messaggi di controllo nei flussi di aggregazione.

    Nodo Compute
    Il nodo Compute riceve il messaggio che contiene le risposte combinate. E' poco probabile che questo messaggio combinato sia in un formato valido per l'output, poiché il messaggio di replica aggregato ha una struttura inusuale e non può essere convertito nel flusso di bit richiesto da alcuni nodi, ad esempio il nodo MQOutput. I terminali out e timeout emettono sempre un messaggio di replica aggregato, quindi richiedono sempre ulteriore elaborazione prima di un nodo MQOutput. E' necessario quindi includere un nodo Compute e configurare questo nodo per creare un messaggio di output valido.
    1. Fare clic con il tasto destro del mouse sul nodo Compute e fare clic su Proprietà.
    2. Specificare il nome del modulo ESQL che personalizza la funzione di questo nodo nella proprietà Base Modulo ESQL.
    3. Fare clic con il tasto destro del mouse sul nodo e fare clic su Apri ESQL per aprire il file ESQL che contiene il modulo per questo nodo. Il modulo è evidenziato nella vista Editor ESQL.
    4. Codificare l'ESQL per creare un singolo messaggio di output dalle repliche aggregate nel messaggio di input.

      La struttura del messaggio di replica aggregato trasmesso tramite il terminale out e le informazioni su come accedere al relativo contenuto, sono fornite in Accesso al contenuto del messaggio combinato.

    5. Facoltativo: specificare i valori per qualsiasi altra proprietà che si desideri configurare per questo nodo.
    6. Connettere il terminale out del nodo Compute al terminale in del nodo di output che rappresenta la destinazione del singolo messaggio di risposta.
    Nodo di output
    Includere un nodo di output per il proprio flusso fan-in. Questo può essere uno qualsiasi dei nodi integrati o un nodo di output definito dall'utente.
    1. Fare clic con il tasto destro del mouse sul nodo di output e fare clic su Proprietà.
    2. Specificare la destinazione per il messaggio di output per questo nodo. Ad esempio, specificare il nome di una coda WebSphere MQ nella proprietà Base Nome coda a cui il nodo MQOutput invia i messaggi.
    3. Facoltativo: specificare i valori per qualsiasi altra proprietà che si desideri configurare per questo nodo.
  4. Premere Ctrl-S per salvare il flusso di messaggi e convalidarne la configurazione.

Accesso al contenuto del messaggio combinato

Il nodo AggregateReply crea una cartella nella struttura ad albero del messaggio combinato sotto Root, denominata ComIbmAggregateReplyBody. Sotto questa cartella, crea un certo numero di cartelle utilizzando i nomi cartella impostati nei nodi AggregateRequest. I messaggi di replica associati sono inseriti sotto queste cartelle.

Ad esempio, i messaggi di richiesta potrebbero avere i nomi cartella:

  • TAXI
  • HOTEL

Il risultante messaggio di replica aggregato creato dal nodo AggregateReply potrebbe avere una struttura simile a quella mostrata di seguito:


Questo è un diagramma della struttura ad albero per il contenuto del messaggio aggregato creato sotto l'elemento ComIbmAggregateReplyBody sotto Root. Il suo contenuto è descritto nel testo intorno.

E' possibile utilizzare un nodo Compute per accedere alla replica dalla società di taxi utilizzando il seguente nome di correlazione:

InputRoot.ComIbmAggregateReplyBody.TAXI.xyz

Il nome della cartella non deve essere necessariamente univoco. Se si dispone di più richieste con il nome cartella TAXI, è possibile accedere alle repliche separate utilizzando l'annotazione di sottoscrizione dell'array, ad esempio:

InputRoot.ComIbmAggregateReplyBody.TAXI[1].xyz
InputRoot.ComIbmAggregateReplyBody.TAXI[2].xyz
Informazioni particolari | Marchi | Download | Libreria | Supporto | Commenti
Copyright IBM Corporation 1999, 2006 Ultimo aggiornamento: ago 17, 2006
ac12300_