Un nodo del flusso di messaggi è una fase di elaborazione in un flusso di messaggi.
Esso riceve un messaggio, esegue una serie di azioni sul messaggio e facoltativamente trasmette il messaggio al nodo successivo nel flusso di messaggi. Un nodo del flusso di messaggi può essere un nodo integrato, un nodo definito dall'utente o un nodo del flusso secondario.
Un nodo del flusso di messaggi ha un numero fisso di punti di input e di output detti terminali. E' possibile stabilire delle connessioni tra i terminali per definire gli instradamenti che può prendere un messaggio in un flusso di messaggi.
Per informazioni su tutti i nodi integrati forniti da WebSphere Message Broker, consultare Nodi integrati.
Un messaggio è ricevuto da un nodo Input ed elaborato in base alla definizione del flusso secondario. Questa potrebbe includere l'archiviazione tramite un nodo Warehouse o la consegna ad un'altra destinazione di messaggi, ad esempio tramite un nodo MQOutput. Se richiesto, il messaggio può essere trasmesso tramite un nodo Output di nuovo al flusso principale per un'ulteriore elaborazione.
Il flusso secondario, quando è integrato in un flusso principale, viene rappresentato da un nodo del flusso secondario, che dispone di un'icona univoca. L'icona è visualizzata con il numero di terminali corretto per rappresentare i nodi Input e Output inclusi nella definizione del flusso secondario.
Secondo il suo utilizzo più comune, un flusso secondario fornisce l'elaborazione richiesta in molte ubicazioni all'interno del flusso di messaggi o viene condiviso tra vari flussi di messaggi. Ad esempio, si potrebbe codificare un'elaborazione errori in un flusso secondario o creare un flusso secondario per fornire una traccia di controllo (memorizzando l'intero messaggio e scrivendo una voce di traccia).
L'utilizzo dei flussi secondari è dimostrato nell'Esempio Programma di gestione degli errori e nell'esempio Richiesta/Replica coordinate. L'esempio Programma di gestione degli errori utilizza un flusso secondario per reperire informazioni relative agli errori e memorizzare tali informazioni in un database. L'esempio Richiesta/Replica coordinate utilizza un flusso secondario per racchiudere l'archivio dei valori ReplyToQ e ReplyToQMgr in un messaggio WebSphere MQ in modo che la logica di elaborazione possa essere riutilizzata in altri flussi di messaggi e per consentire la sostituzione di implementazioni alternative.
Un nodo non produce sempre un messaggio di output per ogni terminale di output: spesso produce un output per un singolo terminale in base al messaggio ricevuto o al risultato dell'operazione del nodo. Ad esempio, un nodo Filter invia in genere un messaggio al terminale true o al terminale false, ma non ad entrambi.
Se è connesso più di un terminale, il nodo invia il messaggio di output ad ogni terminale, ma lo invia al terminale successivo solo quando l'elaborazione per il terminale corrente è completata. Gli aggiornamenti ad un messaggio non sono mai trasmessi ai nodi eseguiti precedentemente, solo ai nodi che seguono il nodo in cui è stato effettuato l'aggiornamento. L'ordine in cui il messaggio è trasmesso ai diversi terminali di output è determinato dal broker; non è possibile modificare questo ordine. La sola eccezione a questa regola è rappresentata dal nodo FlowOrder, nel quale i terminali indicano l'ordine in cui il messaggio verrà trasmesso a ciascuno di essi.
Il flusso di messaggi può accettare un nuovo messaggio per l'elaborazione solo quando tutti i percorsi nel flusso di messaggi (cioè, tutti i nodi connessi da tutti i terminali output) sono stati completati.
L'Esempio Prenotazioni per compagnie aeree utilizza le variabili di ambiente contenute nell'esempio XML_Reservation per memorizzare le informazioni che sono state tratte da una tabella di database e per trasmettere tali informazioni ad un nodo successivo in un flusso di messaggi.