Executando a Amostra Message Routing Usando um Banco de Dados
A execução da amostra Message Routing é dividida em dois cenários
- Usar uma conexão direta com a tabela de banco de dados para recuperar informações de roteamento para
cada mensagem processada
- Usar variáveis compartilhadas para armazenar uma cópia da tabela de banco de dados no fluxo de
mensagens que pode ser usado por cada mensagem processada
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.
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:
- 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.
- 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.
- No Cliente de Teste, clique em Retirar da Fila, clique em Obter Mensagem para ler uma
mensagem a partir da fila ROUTING.OUT1.
- Nas Mensagens de Teste, dê um clique duplo em Database_Direct_message2.mbtest para abrir o arquivo no Cliente de Teste.
- 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.
- 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:
- 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.
- No Cliente de Teste, clique em Enfileirar, clique em Enviar Mensagem para gravar a
mensagem na fila ROUTING.DATABASE.MEMORY.IN1.
- No Cliente de Teste, clique em Retirar da Fila,
clique em Obter Mensagem para obter
a mensagem a partir da fila ROUTING.OUT1.
- Nas Mensagens de Teste,
dê um clique duplo em Database_Memory_cache_message2.mbtest para abrir o arquivo no Cliente de Teste.
- No Cliente de Teste, clique em Enfileirar, clique em Enviar Mensagem para gravar a
mensagem na fila ROUTING.DATABASE.MEMORY.IN1.
- No Cliente de Teste, clique em Retirar da Fila,
clique em Obter Mensagem para
obter a mensagem a partir da fila ROUTING.OUT19.
- 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:
DB2
- Execute o comando:
- No Windows: Insira o seguinte comando em uma janela de comandos do DB2:
db2cmd
- No Linux: Insira o seguinte comando em uma janela do terminal:
db2
- Conecte-se ao banco de dados ROUTING:
DB2> connect to ROUTING user user using password
Em que user é um usuário que tem a autoridade para acessar o banco de dados ROUTING,
geralmente, o mesmo usuário usado para criar o broker de amostra; e
password é a senha usada para esse usuário.
- Atualize a última entrada no routing_table para Enviar Mensagem
ROUTING.OUT18:
DB2> update routing_table set
queue_name='ROUTING.OUT18' where Variable3='Braithwaite'
- Desconecte o banco de dados ROUTING:
DB2> disconnect ROUTING
Oracle
- Digite o seguinte comando em uma janela de comandos:
sqlplus <user>/<password>
Em que user é um usuário que tem a autoridade para acessar a tabela routing_table,
geralmente, o mesmo usuário usado para criar o broker de amostra; e
password é a senha usada para esse usuário.
- Atualize a última entrada no routing_table para Enviar Mensagem ROUTING.OUT18:
update routing_table set queue_name='ROUTING.OUT18' em que Variable3='Braithwaite';
- Dê um clique duplo em Database_Memory_cache_message2.mbtest para abri-lo no Cliente de Teste.
- No Cliente de Teste, clique em Enfileirar,
clique em Enviar Mensagem
para gravar a mensagem na fila ROUTING.DATABASE.MEMORY.IN1.
- 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.
- 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.
- 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.
- 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