Esecuzione dell'esempio Instradamento del messaggio

L'esecuzione dell'esempio Instradamento del messaggio può essere suddivisa in due parti principali:

Queste due parti saranno descritte separatamente. Tutti i messaggi di prova menzionati in questa sezione si possono trovare nella directory Test messages nel progetto flusso di messaggi denominato Message routing sample message flows.

Messaggi di prova di input

Tutti i messaggi di prova utilizzati nell'esecuzione di questo esempio si basano sul seguente formato:

<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 l'instradamento del messaggio.

Esecuzione dell'esempio

Utilizzo di una connessione diretta alla tabella database per l'instradamento del messaggio

Questa parte dell'esempio utilizza il flusso di messaggi Routing_using_database_table. Tale flusso contiene una coda di input denominata ROUTING.DATABASE.IN1. Il flusso di messaggi può instradare il messaggio ad una delle 20 code di output in base al contenuto del messaggio (ROUTING.OUT seguito da un numero da 1 a 19 più una coda denominata ROUTING.DEFAULT). Per eseguire questa parte dell'esempio:

  1. Aprire il file di accodamento del messaggio di prova denominato: Direct_database_message1.
  2. Fare clic su Scrivi nella coda. Un messaggio viene inviato alla coda ROUTING.DATABASE.IN1. Il flusso di messaggi instrada il messaggio alla coda ROUTING.OUT1.
  3. Per controllare che il messaggio abbia raggiunto la coda corretta utilizzare WebSphere MQ Explorer:
    1. Avviare WebSphere MQ Explorer
    2. Fare clic con il tasto destro del mouse sulla cartella Queue Managers e selezionare Show queue manager. Immettere WBRK6_DEFAULT_QUEUE_MANAGER.
    3. Espandere le cartelle nel gestore code e selezionare Queues. Aggiornare la visualizzazione della coda per visualizzare il numero corrente di messaggi su ciascuna coda. Se si sta utilizzando WebSphere MQ v5.3 su Windows, quando si aggiorna WebSphere MQ Explorer assicurarsi che venga selezionata la cartella Queues, non un nome effettivo di coda, altrimenti non tutte le code visualizzate verranno aggiornate.
    4. Utilizzare WebSphere MQ Explorer per il resto dell'esempio per garantire che i messaggi vengano instradati all'ubicazione corretta.
  4. Aprire il file di accodamento denominato Direct_database_message2 e scrivere il messaggio nella coda.
  5. Aggiornare WebSphere MQ Explorer. Dovrebbe venire visualizzato un messaggio nella coda ROUTING.OUT19.

Se tutti i passi riportati sopra sono riusciti, la prima parte dell'esempio è completata. Esaminare l'ESQL nel flusso di messaggi Routing_using_database_table per verificare come si è realizzato l'instradamento del messaggio.

Utilizzo di una memorizzazione cache in memory della tabella del database per l'instradamento del messaggio

Questa parte dell'esempio fa uso del flusso di messaggi Routing_using_memory_cache. Tale flusso contiene due code di input denominate ROUTING.MEMORY.IN1 e ROUTING.REFRESH.IN1 ed il flusso di messaggi può instradare il messaggio ad una delle 20 code in base al contenuto del messaggio (ROUTING.OUT seguito da un numero da 1 a 19 più una coda denominata ROUTING.DEFAULT). L'instradamento segue la medesima logica della versione non memorizzata in cache. La sola differenza è data dal fatto che il database è memorizzato nella cache in memory utilizzando variabili condivise. I passi per l'esecuzione di questa parte dell'esempio sono:

  1. Aprire il file di accodamento del messaggio di prova denominato: Memory_cache_message1 e scrivere il messaggio nella coda.
  2. Aggiornare WebSphere MQ Explorer. Un nuovo messaggio dovrebbe essere visualizzato nella coda ROUTING.OUT1 (un totale di due messaggi).
  3. Aprire il file di accodamento del messaggio di prova denominato Memory_cache_message2 e scrivere il messaggio nella coda.
  4. Aggiornare WebSphere MQ Explorer. Un nuovo messaggio dovrebbe essere visualizzato nella coda ROUTING.OUT19 (un totale di due messaggi).
  5. Fino a questo punto il flusso sta funzionando esattamente come l'ultimo flusso per quanto riguarda la funzionalità ma sta utilizzando una versione memorizzata nella cache della tabella database. Per verificare l'effetto dell'utilizzo della cache, la tabella database verrà modificata per mostrare come può essere aggiornata la cache in memory. Per modificare la tabella database:

    DB2

    1. Immettere il seguente comando in una finestra dei comandi DB2 (su Windows) o in una console dei comandi (su Linux):

      db2cmd

    2. Dalla richiesta comandi immettere db2 per avviare la riga comandi DB2.
    3. Connettersi al database ROUTING:

      DB2> connect to ROUTING user user using password

      dove user è un utente con autorizzazione all'accesso al database ROUTING. Si tratta normalmente dello
      stesso utente utilizzato per creare il broker di esempio. password è la password utilizzata per tale utente.

    4. Aggiornare l'ultima voce in routing_table da scrivere nella coda ROUTING.OUT18

      DB2> update routing_table set queue_name='ROUTING.OUT18' where Variable3='Braithwaite'

    Derby

    1. Avviare la riga comandi ij. Se non è già stato configurato il file batch per la riga comandi ij, consultare Visualizzazione del contenuto di un database Derby.
    2. Aggiornare l'ultima voce in routing_table da scrivere nella coda ROUTING.OUT18:

      ij>update routing_table set queue_name='ROUTING.OUT18' where Variable3='Braithwaite';

  6. Aprire il file di accodamento del messaggio di prova denominato: Memory_cache_message2 e scrivere il messaggio nella coda.
  7. Aggiornare WebSphere MQ Explorer. Un nuovo messaggio dovrebbe essere visualizzato nella coda ROUTING.OUT19 (un totale di tre messaggi). Si noti che il messaggio non si sta instradando al nuovo nome coda poiché la tabella database non è stata riletta.
  8. Per fare in modo che il flusso rilegga il database aprire il file di accodamento: Refresh_cache_message1 e scrivere il messaggio nella coda.
  9. Ripetere il passo 3 per inviare un messaggio di prova al flusso di messaggi.
  10. Aggiornare WebSphere MQ Explorer. Un nuovo messaggio dovrebbe essere visualizzato nella coda ROUTING.OUT18 (un totale di un messaggio). La tabella database memorizzata ora è stata aggiornata.

I passi da 5 a 10 possono essere ripetuti ma modificando il queue_name nel database in uno dei due nomi coda disponibili. Invece di utilizzare il messaggio Refresh_cache_message1, il flusso di messaggi può essere arrestato e riavviato. Anche queste operazioni porteranno all'aggiornamento della tabella database memorizzata in cache.

Se tutti i passi riportati sopra sono riusciti, l'esecuzione dell'esempio è completata. Esaminare l'ESQL nel flusso di messaggi Routing_using_memory_cache per verificare come si è realizzata la memorizzazione del database nelle variabili condivise.

Comprensione dei risultati

L'esempio Instradamento del messaggio instrada il messaggio di prova di input a varie code di output senza modificare l'output. Il messaggio di output è identico al messaggio di prova di input. I passi forniti nelle due parti, illustrano in dettaglio dove vengono instradati i messaggi. E' possibile controllare che i messaggi vengano instradati alla coda corretta utilizzando WebSphere MQ Explorer (come illustrato dettagliatamente nei passi riportati sopra). Inoltre, è possibile controllare il contenuto dei messaggi nelle code utilizzando il programma per annullare l'accodamento che fa parte del Message Brokers Toolkit. Per accedere a tale programma fare clic sull'apposita icona nella barra degli strumenti del toolkit:

ubicazione del programma per l'annullamento dell'accodamento

icona Pagina principale   Torna alla pagina home dell'esempio