Executando a Amostra Message Routing Usando um Banco de Dados

A execução da amostra Message Routing é dividida em dois cenários

Esses dois cenários são descritos separadamente. Todas as mensagens de teste que são usadas nesta seção são armazenadas no diretório Mensagens de Teste no projeto do Message Broker Fluxos de Mensagens da Amostra de Roteamento de Mensagem.

Se você encontrar algum problema ao executar a amostra, consulte Resolvendo problemas ao executar amostras na documentação do WebSphere Message Broker.

Mensagens de Teste de Entrada

Todas as mensagens de teste que são usadas para executar essa amostra são baseadas no seguinte 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>Games</Category>
        <Price>00.30</Price>
        <Quantity>01</Quantity>
      </Item>
      <Item>
        <Code>02</Code><Code>03</Code><Code>01</Code>
        <Description>The Times Newspaper</Description>
        <Category>Books and Media</Category>
        <Price>00.20</Price>
        <Quantity>01</Quantity>
      </Item>
      <Balance>00.50</Balance>
      <Currency>Sterling</Currency>
    </Invoice>
  </SaleList>
  <Trailer>
    <CompletionTime>12.00.00</CompletionTime>
  </Trailer>
</SaleEnvelope>

Os campos Inicial e Sobrenome são usados para o roteamento das mensagens.

Executando a Amostra

Utilizando uma Conexão Direta com a Tabela de Banco de Dados para Rotear a Mensagem

Essa parte da amostra utiliza o fluxo de mensagens Routing_using_database_table. O fluxo de mensagens contém uma fila de entrada denominada ROUTING.DATABASE.IN1. O fluxo de mensagens pode rotear a mensagem para uma das 20 filas de saída com base no conteúdo da mensagem (ROUTING.OUT, seguida por um número de 1 a 19, além de uma fila denominada ROUTING.DEFAULT). Para executar essa parte da amostra:

  1. Na visualização do Desenvolvimento do Intermediário, expanda o projeto Fluxos de Mensagens de Amostra de Roteamento da Mensagem. Nos Testes de Fluxo, dê um clique duplo em Database_Direct_message1.mbtest para abrir o arquivo no Cliente de Teste.
  2. No Cliente de Teste, clique em Enfileirar, clique em Enviar Mensagem para enviar uma mensagem para a fila ROUTING.DATABASE.IN1. O fluxo de mensagens roteia a mensagem para a fila ROUTING.OUT1.
  3. No Cliente de Teste, clique em Retirar da Fila, clique em Obter Mensagem para ler uma mensagem a partir da fila ROUTING.OUT1.
  4. Nas Mensagens de Teste, dê um clique duplo em Database_Direct_message2.mbtest para abrir o arquivo no Cliente de Teste.
  5. No Cliente de Teste, clique em Retirar da Fila, clique em Enviar Mensagem para enviar a mensagem para ROUTING.DATABASE.IN1. O fluxo de mensagens envia a mensagem para a fila ROUTING.OUT19.
  6. No Cliente de Teste, clique em Retirar da Fila, clique em Obter Mensagem para ler a mensagem enviada a partir da fila ROUTING.OUT19.

Se todas as etapas anteriores forem bem-sucedidas, a primeira parte da amostra estará concluída. Para descobrir como o roteamento está programado, consulte o ESQL no fluxo de mensagens e consulte Routing_using_database_table_Compute.

Usando um cache de memória da tabela de banco de dados para rotear a mensagem

Esta parte da amostra utiliza-se do fluxo de mensagens Routing_using_memory_cache. Ela contém duas filas de entrada chamadas ROUTING.DATABASE.MEMORY.IN1 e ROUTING.REFRESH.IN1. O fluxo de mensagens pode enviar a mensagem para uma das 20 filas com base no conteúdo da mensagem (ROUTING.OUT seguido por um número de 1-19 mais uma fila denominada ROUTING.DEFAULT). A lógica de roteamento é a mesma que da versão não armazenada em cache, a diferença é que o banco de dados está armazenado em cache de memória usando-se variáveis compartilhadas. Use as seguintes etapas para executar esta parte da amostra:

  1. Na visualização do Desenvolvimento do Intermediário, expanda o projeto Fluxos de Mensagens de Amostra de Roteamento da Mensagem. Nas Mensagens de Teste, dê um clique duplo em Database_Memory_cache_message1.mbtest para abrir o arquivo no Cliente de Teste.
  2. No Cliente de Teste, clique em Enfileirar, clique em Enviar Mensagem para gravar a mensagem na fila ROUTING.DATABASE.MEMORY.IN1.
  3. No Cliente de Teste, clique em Retirar da Fila, clique em Obter Mensagem para obter a mensagem a partir da fila ROUTING.OUT1.
  4. Nas Mensagens de Teste, dê um clique duplo em Database_Memory_cache_message2.mbtest para abrir o arquivo no Cliente de Teste.
  5. No Cliente de Teste, clique em Enfileirar, clique em Enviar Mensagem para gravar a mensagem na fila ROUTING.DATABASE.MEMORY.IN1.
  6. No Cliente de Teste, clique em Retirar da Fila, clique em Obter Mensagem para obter a mensagem a partir da fila ROUTING.OUT19.
  7. Até este ponto, o fluxo estará se comportando exatamente da mesma forma que o último fluxo, enquanto estiver relacionado à funcionalidade, mas este fluxo está usando uma versão armazenada em cache da tabela de banco de dados. Para testar o efeito do uso do cache, a tabela de banco de dados será modificada para mostrar como o cache na memória pode ser atualizado. Para modificar a tabela de banco de dados para seu banco de dados:
  8. Dê um clique duplo em Database_Memory_cache_message2.mbtest para abri-lo no Cliente de Teste.
  9. No Cliente de Teste, clique em Enfileirar, clique em Enviar Mensagem para gravar a mensagem na fila ROUTING.DATABASE.MEMORY.IN1.
  10. No Cliente de Teste, clique em Retirar da Fila, clique em Obter Mensagem para obter a mensagem a partir da fila ROUTING.OUT19. A mensagem não é roteada para o novo nome da fila porque a tabela de banco de dados não foi relida.
  11. Para fazer com que o fluxo releia o banco de dados, em Mensagens de Teste, abra Database_Refresh_cache_message1.mbtest, clique em Enfileirar, clique em Enviar Mensagem para gravar a mensagem na fila ROUTING.DATABASE.REFRESH.IN1.
  12. Dê um clique duplo em Database_Memory_cache_message2.mbtest para abri-lo no Cliente de Teste, clique em Enfileirar e depois em Enviar Mensagem para gravar a mensagem na fila ROUTING.DATABASE.MEMORY.IN1.
  13. No Cliente de Teste, clique em Retirar da Fila e clique em Obter Mensagem para ler a mensagem roteada a partir da fila ROUTING.OUT18.

As etapas de 9 a 13 podem ser repetidas alterando o queue_name no banco de dados para um dos outros nomes de fila que estiverem disponíveis. Em vez de usar a mensagem Database_Refresh_cache_message1, é possível parar e reiniciar o fluxo de mensagens, o que também faz com que a tabela de banco de dados armazenada em cache seja atualizada.

Se todas as etapas anteriores forem bem-sucedidas, a amostra estará concluída. Para descobrir como armazenar o banco de dados nas variáveis compartilhadas, observe no ESQL no fluxo de mensagens, consulte Routing_using_database_and_memory_cache_Compute.

Entendendo os Resultados

A amostra Roteamento de Mensagens envia a mensagem de teste de entrada a várias filas de saída sem modificação da saída. A mensagem de saída é idêntica a mensagem de teste de entrada, consulte Mensagens de teste de entrada. As etapas fornecidas nos dois cenários detalham para onde as mensagens são roteadas. Você pode verificar as mensagens que são enviadas à fila correta usando o WebSphere MQ Explorer, bem como usando o Retirar da Fila no Cliente de Teste.

Voltar para Home da Amostra