Informazioni sull'esempio Instradamento del messaggio

L'esempio Instradamento del messaggio mostra come si può utilizzare una tabella database per memorizzare le informazioni sull'instradamento di cui un flusso di messaggi si può servire per instradare messaggi alle code WebSphere MQ. Si tratta di un approccio alternativo alla creazione di informazioni sull'instradamento protette in un nodo Compute del flusso di messaggi.

L'utilizzo di una tabella database rappresenta il modo consigliato in WebSphere Message Broker per memorizzare qualsiasi formato di dati di instradamento o conversione per i seguenti motivi:

L'unico problema dell'utilizzo di database per memorizzare queste informazioni è costituito dal sovraccarico delle prestazioni a cui si va incontro per accedere al database ogni volta che si invia un messaggio ad un flusso di messaggi.

Prima della versione 6.0 di WebSphere Message Broker, si doveva prendere una decisione di progettazione tra instradamento protetto e informazioni di mappatura in ESQL o utilizzo di una tabella database per memorizzare le informazioni. La decisione spesso si basava sul fatto che il costo per le prestazioni che l'utilizzo del database comportava fosse accettabile. Per alte velocità di messaggi, si è spesso deciso di creare informazioni protette più facili da conservare in una tabella database.

Nella versione 6.0 è stato introdotto il concetto di variabili condivise. Con le variabili condivise è possibile memorizzare lo stato nei flussi di messaggi disponibile per tutti i messaggi che utilizzano il flusso. I dettagli esatti sulla modalità di utilizzo delle variabili condivise si possono trovare in Variabili DECLARE. Utilizzando le variabili condivise, le tabelle database si possono memorizzare in-memory in un flusso di messaggi. In questo modo si evita la necessità di accesso continuo alla tabella database e si forniscono quasi tutti i vantaggi dell'utilizzo di una tabella database senza sovraccarico delle prestazioni. Si perde solo un vantaggio: la cache non rileverà le modifiche alla tabella database quando si verificano. Per cogliere le modifiche, è necessario riavviare il flusso di messaggi oppure è necessario aggiungere un meccanismo di aggiornamento al flusso di messaggi.

L'esempio Instradamento del messaggio mostra come utilizzare una tabella database per instradare messaggi in un flusso di messaggi e come un flusso di messaggi può utilizzare variabili condivise per memorizzare la tabella database. Mostra anche come la tabella database memorizzata nella cache possa essere aggiornata riavviando il flusso di messaggi o inviando un messaggio di aggiornamento al flusso di messaggi.

L'esempio Instradamento del messaggio contiene due flussi di messaggi:

Flusso di messaggi Routing_using_database_table

Un esempio di come instradare un messaggio utilizzando una tabella database. Questo flusso di messaggi di esempio legge un messaggio da una coda WebSphere MQSeries, crea un elenco di destinazioni basato sui dati in una tabella database ed instrada quindi il messaggio alle voci nell'elenco di destinazioni.

Flusso di messaggi Routing_using_database_table

Flusso di messaggi Routing_using_memory_cache

Un esempio di come instradare un messaggio utilizzando una versione nella memoria cache della tabella database memorizzata nelle variabili condivise. Il flusso di messaggi ha due flussi secondari principali. Il primo flusso secondario fornisce la stessa funzionalità del flusso di messaggi Routing_using_database_table ma utilizzando variabili condivise. Il secondo flusso secondario viene utilizzato per aggiornare le variabili di memoria condivise.

Flusso di messaggi Routing_using_memory_cache

Messaggio di prova

Il messaggio di prova utilizzato per eseguire l'esempio Instradamento del messaggio è un messaggio XML lineare che contiene dettagli della fattura relativa ad un cliente

<SaleEnvelope>
  <Header>
    <SaleListCount>1</SaleListCount>
  </Header>
  <SaleList>
    <Invoice>
      <Initial>T</Initial>
      <Initial>D</Initial>
      <Surname>Montana</Surname>
      <Item><Code>00</Code>
        <Code>01</Code><Code>02</Code>
        <Description>Twister</Description>
        <Category>Giochi</Category>
        <Price>00,30</Price>
        <Quantity>01</Quantity>
      </Item>
      <Item>
        <Code>02</Code><Code>03</Code><Code>01</Code>
        <Description>Il quotidiano The Times</Description>
        <Category>Libri e Media</Category>
        <Price>00,20</Price>
        <Quantity>01</Quantity>
      </Item>
      <Balance>00,50</Balance>
      <Currency>Sterlina</Currency>
    </Invoice>
  </SaleList>
  <Trailer>
    <CompletionTime>12.00.00</CompletionTime>
  </Trailer>
</SaleEnvelope>

I campi <Initial> e <Surname> vengono utilizzati per effettuare la ricerca nel database al fine di trovare la coda di destinazione per ogni cliente.

Tabella database utilizzata per l'instradamento del messaggio XML di fattura

I flussi di messaggi di esempio utilizzano la stessa tabella database da cui richiamare le informazioni sull'instradamento. La tabella database contiene cinque colonne: le prime tre contengono informazioni sulla ricerca ricavate dal messaggio in entrata e le ultime due colonne contengono i dettagli della coda e del gestore code a cui è instradato il messaggio. Le colonne sono:

Colonna Descrizione
Variable1 La prima variabile utilizzata nella ricerca della coda di destinazione (Questa variabile è protetta nell'esempio e non si ricava dal messaggio XML)
Variable2 La seconda variabile utilizzata nella ricerca della coda di destinazione (Questa variabile si ricava dal messaggio XML utilizzando il campo <Initial>)
Variable3 La terza variabile utilizzata nella ricerca della coda di destinazione (Questa variabile si ricava dal messaggio XML utilizzando il campo <Surname>)
Queue_manager Il nome del gestore code di destinazione
Queue_name Il nome della coda di destinazione

La definizione per la tabella database viene fornita nel progetto flusso di messaggi di esempio nella directory Database. La tabella database non è direttamente collegata al messaggio XML in entrata, quindi sarebbe possibile riutilizzare questa tabella per una quantità di messaggi di instradamento differenti. In questo caso, la prima variabile potrebbe essere utilizzata per distinguere tra diversi nodi che utilizzano la stessa tabella.

Ogni nodo Compute dei flussi di messaggi per i flussi di messaggi contiene commenti ESQL dettagliati che spiegano esattamente cosa è stato fatto per realizzare il funzionamento richiesto:

La modalità di visualizzazione del contenuto del database dell'esempio dipende dal prodotto database installato. Per database DB2 utilizzare gli strumenti forniti da DB2; ad esempio, il DB2 Control Center. Se non è installato alcun prodotto database, l'esempio utilizza il database Derby di Apache. Per istruzioni su come visualizzare i dati in un database Derby consultare Visualizzazione del contenuto di un database Derby.

icona Pagina principale   Torna alla pagina home dell'esempio