Leggere l'argomento relativo a nodi del flusso di messaggi.
WebSphere Message Broker include un numero elevato di nodi di elaborazione dei messaggi che è possibile utilizzare all'interno dei propri flussi di messaggi. Esso fornisce inoltre un'interfaccia che è possibile utilizzare per definire i propri nodi, noti come nodi definiti dall'utente.
La decisione su quali nodi utilizzare dipende dal tipo di elaborazione che si desidera effettuare sui messaggi. I nodi integrati possono essere suddivisi in diverse categorie e sono visualizzati nel workbench raggruppati in tali categorie (sebbene questo raggruppamento non abbia effetti sul loro funzionamento). E' possibile categorizzare allo stesso modo anche i nodi definiti dall'utente. Le categorie sono:
L'utilizzo dei flussi di messaggi in cui sono contenuti i nodi MQeInput in WebSphere
Message Broker Versione
6.0 è obsoleto. Progettare nuovamente i flussi di messaggi per rimuovere i nodi MQe e sostituirli con nodi MQ configurati in modo specifico e coordinati con la configurazione del Gateway MQe. Per ulteriori dettagli, consultare Migrazione di un flusso di messaggi che contiene i nodi di WebSphere MQ Everyplace.
Un'istanza del nodo Input rappresenta un terminale di input. Ad esempio, se è stata inclusa un'istanza del nodo Input, l'icona del flusso secondario mostra un terminale di input che è possibile connettere ad altri nodi nel flusso principale nello stesso modo in cui si connette qualsiasi altro nodo.
E' possibile distribuire solo flussi di messaggi che abbiano almeno un nodo di input. Se il flusso di messaggi non contiene alcun nodo di input, non è possibile aggiungerlo al file bar (broker archive). Il nodo di input può trovarsi nel flusso principale o in un flusso di messaggi che è incorporato nel flusso principale.
E' possibile utilizzare più di un nodo di input in un flusso di messaggi. Per ulteriori informazioni, consultare Utilizzo di più di un nodo di input.
L'utilizzo dei flussi di messaggi in cui sono contenuti i nodi MQeOutput in WebSphere
Message Broker Versione
6.0 è obsoleto. Progettare nuovamente i flussi di messaggi per rimuovere i nodi MQe e sostituirli con nodi MQ configurati in modo specifico e coordinati con la configurazione del Gateway MQe. Per ulteriori dettagli, consultare Migrazione di un flusso di messaggi che contiene i nodi di WebSphere MQ Everyplace.
Un'istanza del nodo Output rappresenta un terminale di output. Ad esempio, se sono state incluse due istanze del nodo di Output, l'icona del flusso secondario mostra due terminali di output che è possibile connettere ad altri nodi nel flusso principale nello stesso modo in cui si connette qualsiasi altro nodo.
La maggior parte delle aziende dispongono di applicazioni che sono state sviluppate nel corso di molti anni, su sistemi diversi, utilizzando linguaggi di programmazione diversi e metodi di comunicazione diversi. WebSphere Message Broker fa sì che le applicazioni non debbano interpretare queste differenze poiché fornisce la capacità di configurare flussi di messaggi che trasformano i messaggi da un formato all'altro.
Ad esempio, i nomi personali sono registrati in diversi formati nelle diverse applicazioni. Cognome per primo o per ultimo, con o senza le iniziali, maiuscolo o minuscolo: queste sono solo alcune delle possibili variazioni. Dal momento che si può configurare il flusso di messaggi in modo che riconosca i requisiti di ogni applicazione, ogni messaggio può essere trasformato nel formato corretto senza modificare l'applicazione di invio o di ricezione.
E' possibile gestire il contenuto del messaggio per aggiornarlo in diversi modi. In questo caso, le scelte possono dipendere dalla eventualità che il flusso di messaggi debba gestire messaggi predefiniti (basati su modello) o messaggi a definizione automatica (ad esempio, XML) o entrambi.
Un flusso di messaggi può ricreare completamente un messaggio, convertirlo da un formato all'altro (se per formato si intende l'ordine dei campi, l'ordine dei byte, il linguaggio e così via), rimuovere il contenuto dal messaggio o immettere in esso dati specifici. Ad esempio, un nodo può interagire con un database per richiamare informazioni aggiuntive o per memorizzare una copia del messaggio (totale o parziale) nel database per l'elaborazione non in linea.
I seguenti esempi mostrano come possa essere importante la trasformazione dei messaggi:
E' possibile anche creare flussi di messaggi che interagiscono tra loro utilizzando questi nodi. Sebbene l'operazione predefinita di un flusso di messaggi non influisca sull'operazione di un altro flusso di messaggi, è possibile forzare questo impatto configurando i flussi di messaggi in modo che memorizzino e richiamino le informazioni in un'origine esterna come ad esempio un database.
Utilizzare l'editor ESQL per create un modulo ESQL, specifico per questo nodo, che contenga le istruzioni che definiscono le azioni da eseguire sul messaggio o sul database. Non utilizzare il codice ESQL sviluppato per l'utilizzo in un nodo Compute in altri tipi di nodi.
E' possibile controllare la modalità in cui questo nodo accede al database specificando le informazioni relative alla password e all'utente per l'origine dati specificata nella proprietà del nodo. Utilizzare il comando mqsisetdbparms per inizializzare e gestire questi valori.
E' possibile controllare la modalità in cui questo nodo accede al database specificando le informazioni relative alla password e all'utente per l'origine dati specificata nella proprietà del nodo. Utilizzare il comando mqsisetdbparms per inizializzare e gestire questi valori.
Se i requisiti di manipolazione del messaggio sono complessi, completare queste operazioni all'interno di un singolo nodo Compute. Pochi e più complessi nodi Compute operano meglio di un numero superiore di nodi più semplici, poiché il broker analizza il messaggio al momento dell'immissione su ciascun nodo Compute.
E' possibile controllare la modalità in cui questo nodo accede al database specificando le informazioni relative alla password e all'utente per l'origine dati specificata nella proprietà del nodo. Utilizzare il comando mqsisetdbparms per inizializzare e gestire questi valori.
Utilizzando un editor Mappatura, è possibile sviluppare mappature per eseguire semplici manipolazioni su messaggi predefiniti nel nodo Mapping. Non utilizzare le mappature sviluppate per l'utilizzo in un nodo Mapping in altri tipi di nodi.
Utilizzando un editor Mappatura, è possibile sviluppare mappature per eseguire semplici manipolazioni su messaggi predefiniti nel nodo Extract. Non utilizzare le mappature sviluppate per l'utilizzo in un nodo Extract in altri tipi di nodi.
Questo nodo fornisce un'interfaccia molto flessibile con un'ampia gamma di funzioni. Esso dispone inoltre di proprietà che possono essere utilizzare per controllare in che modo l'interazione partecipa alle transazioni.
E' possibile controllare la modalità in cui questo nodo accede al database specificando le informazioni relative alla password e all'utente per l'origine dati specificata nella proprietà del nodo. Utilizzare il comando mqsisetdbparms per inizializzare e gestire questi valori.
E' possibile solo aggiornare un database da questo nodo; non è possibile aggiornare alcun contenuto del messaggio. Se si desidera aggiornare il contenuto del messaggio, utilizzare il nodo Compute o Mapping.
E' possibile controllare la modalità in cui questo nodo accede al database specificando le informazioni relative alla password e all'utente per l'origine dati specificata nella proprietà del nodo. Utilizzare il comando mqsisetdbparms per inizializzare e gestire questi valori.
E' possibile solo aggiornare i database da questi nodi: non è possibile aggiornare alcun contenuto del messaggio. Se si desidera aggiornare il contenuto del messaggio, utilizzare il nodo Compute o Mapping.
E' possibile controllare la modalità in cui questo nodo accede al database specificando le informazioni relative alla password e all'utente per l'origine dati specificata nella proprietà del nodo. Utilizzare il comando mqsisetdbparms per inizializzare e gestire questi valori.
E' possibile solo aggiornare un database da questo nodo; non è possibile aggiornare alcun contenuto del messaggio. Se si desidera aggiornare il contenuto del messaggio, utilizzare il nodo Compute o Mapping.
Se si desidera trasformare un messaggio XML di input in un altro formato utilizzando i fogli di stile XMLT, utilizzare il nodo XMLTransformation. E' necessario che i dati possano essere analizzati in un messaggio XML. Il risultato della trasformazione è un output in forma di messaggio BLOB. Il foglio di stile, utilizzando le regole definite in esso, può ordinare i dati; selezionare gli elementi dei dati da includere o da escludere in base a determinati criteri e trasformare i dati in qualche altro formato.
Il motore di trasformazione Xalan-Java (Processore Apache Xalan-java XSLT) è utilizzato come motore di trasformazione sottostante. Per i dettagli su XMLT, fare riferimento a W3C XSL Transformations.
E' possibile distribuire i fogli di stile e i file XML ai gruppi di esecuzione del broker, per facilitare la manutenzione dei fogli di stile e dei file XML.
E' possibile utilizzare il nodo JMSMQTransform per inviare messaggi a flussi di messaggi legacy e interagire con JMS di WebSphere MQ e le prestazioni di pubblicazione sottoscrizione di WebSphere Message Broker.
E' possibile utilizzare il nodo MQJMSTransform per inviare messaggi a flussi di messaggi legacy e interagire con JMS di WebSphere MQ e le prestazioni di pubblicazione sottoscrizione di WebSphere Message Broker.
Utilizzare il nodo MQOptimizedFlow per sostituire un flusso di messaggi di pubblicazione/sottoscrizione composto da un nodo MQInput connesso ad un nodo Publication e che utilizza JMS sul trasporto WebSphere MQ. Non è possibile utilizzare il nodo MQOptimizedFlow su sistemi z/OS.
Utilizzare il nodo MQOptimizedFlow per migliorare le prestazioni, in particolare quando un autore (Publisher) singolo produce una pubblicazione permanente per un singolo sottoscrittore.
E' possibile controllare la modalità in cui questo nodo accede al database specificando le informazioni relative alla password e all'utente per l'origine dati specificata nella proprietà del nodo. Utilizzare il comando mqsisetdbparms per inizializzare e gestire questi valori.
La seguente tabella sintetizza cosa è possibile aggiornare in questi nodi.
Nodo | Aggiornare il database? | Aggiornare il messaggio? | Aggiornare LocalEnvironment? | E' richiesta la serie di messaggi? |
---|---|---|---|---|
Compute | Sì | Sì | Sì | No |
Database | Sì | No | Sì | No |
DataDelete | Sì | No | Sì | Sì |
DataInsert | Sì | No | Sì | Sì |
DataUpdate | Sì | No | Sì | Sì |
Extract | Sì | Sì | Sì | Sì |
Mapping | Sì | Sì | Sì | Sì |
Warehouse | Sì | No | Sì | Sì |
E' possibile utilizzare i nodi che determinato l'ordine e il flusso del controllo all'interno del flusso di messaggi in vari modi per decidere come vengono elaborati i messaggi dal flusso. E' possibile anche utilizzare i nodi (TimeoutControl e TimeoutNotification) che determinano l'ora, e la frequenza della ricorrenza, di eventi all'interno del flusso di messaggi. L'instradamento è indipendente dalla trasformazione dei messaggi, anche se il percorso intrapreso da un messaggio può determinare esattamente che tipo di trasformazione verrà eseguita su di esso.
Ad esempio, un'applicazione per il trasferimento di denaro invia sempre messaggi ad un'altra applicazione. Si potrebbe decidere che ogni messaggio con un valore di trasferimento superiore a $10,000 debba essere inviato anche ad una seconda applicazione, per abilitare la registrazione di tutte le transazioni con valore elevato.
In un altro esempio, un autoclub nazionale offre un servizio "premier" ai membri specifici per ordini al di sopra di un valore soglia. La maggior parte degli ordini sono instradati attraverso i canali usuali, ma, se il numero di tessera e il valore dell'ordine corrispondono a certi criteri, l'ordine riceve un trattamento speciale.
E' possibile anche stabilire un'opzione di instradamento più dinamica creando informazioni di instradamento aggiuntive nel messaggio quando viene elaborato. Serie di regole facoltative sono impostate per ricevere messaggi in base ai valori (destinazioni) specificati nel messaggio. E' possibile stabilire queste regole in modo che un messaggio venga elaborato da una o più serie di regole facoltative, in un ordine determinato dal contenuto aggiunto del messaggio.
Utilizzare i seguenti nodi per prendere decisioni sul percorso che un messaggio segue attraverso il flusso di messaggi:
il nodo Validate sostituisce il nodo Check obsoleto in WebSphere Message Broker Versione 6.0 e nei rilasci successivi. Il nodo Validate funziona allo stesso modo del nodo Check ma dispone di proprietà aggiuntive per consentire la convalida del contenuto del messaggio attraverso programmi di analisi che supportano tale capacità.
I terminali del nodo sono true, false, unknown e failure; il messaggio viene trasmesso al terminale true se il test ha esito positivo e al terminale false se ha esito negativo. Se non è possibile risolvere l'istruzione (ad esempio, verifica il valore di un campo che non compare nel messaggio di input), il messaggio viene trasmesso al terminale unknown. Se viene individuato un errore, il messaggio viene trasmesso al terminale failure.
Il test nell'istruzione ESQL può dipendere dal contenuto del messaggio, dal contenuto del database o da una combinazione delle due cose.
È possibile controllare il modo in cui questo nodo accede ad un database specificando le informazioni relative a utente e password per ogni origine dati definita nel registro sul sistema broker. Sui sistemi distribuiti, utilizzare il comando mqsisetdbparms per inizializzare e gestire questi valori.
Su z/OS, utilizzare l'ID dell'attività avviata dal broker per accedere al database.
Utilizzare questo nodo piuttosto che il nodo Compute per fornire questa funzione; sebbene sia possibile configurare il nodo Compute per controllare la selezione e l'instradamento dei messaggi, il nodo Filter fornisce delle prestazioni migliori.
Si potrebbe desiderare che un processo batch venga eseguito ogni giorno ad un'ora specifica o si potrebbe desiderare che le informazioni vengano elaborate e pubblicate a intervalli prefissati (ad esempio, i tassi di cambio in valuta estera sono calcolati e inviati alle banche) o si potrebbe desiderare di intraprendere un'azione di ripristino se alcune transazioni non sono state completate entro un tempo definito. In tutti questi casi vengono forniti due nodi di timeout (TimeoutControl e TimeoutNotification).
è possibile associare più di un nodo TimeoutControl al nodo TimeoutNotification.
E' possibile raccogliere richieste e risposte correlate utilizzando i nodi AggregateControl, AggregateReply e AggregateRequest. Utilizzare questi nodi per creare diverse richieste in risposta a un messaggio di input, per controllare e coordinare le risposte ricevute in risposta a quelle richieste e per mettere insieme le informazioni fornite dalle risposte per procedere nell'elaborazione.
E' possibile utilizzare i nodi che influenzano la gestione e la notifica degli errori:
Ad eccezione dei nodi Compute, Extract e Mapping, il messaggio di input e il messaggio di output ricevuti da un nodo sono identici.