Executando a Amostra Collector Node

Execute a amostra para enviar os pedidos do cliente 111 e 222

Deve-se concluir as instruções de configuração, consulte Configurando a Amostra Collector Node, e importar e implementar o fluxo de mensagens, consulte Amostra Collector Node, antes de poder executar a amostra Collector Node.

Nota. Pode ser mais simples salvar inicialmente os arquivos em um diretório temporário para que, ao executar a amostra, você possa copiar e colar os arquivos no diretório que é monitorado pelo nó FileInput que já foi configurado. Essa ação assegura que os arquivos sejam entregues ao broker no tempo limite do lote do nó Collector.

Se você encontrar algum problema ao executar a amostra, consulte Resolvendo Problemas ao Executar Amostras na documentação do WebSphere Message Broker e consulte a seção "Determinação de Problema" no final deste tópico.

Ao concluir a configuração da amostra, o nó FileInput, fileinput, monitora o diretório para os detalhes de entrega para os pedidos do cliente 111 e 222.

Nota: Dependendo de quão rapidamente os pedidos do cliente são enviados, a entrada para os dois pedidos pode fazer com que o fluxo produza ou uma única mensagem de saída de fatura em lote contendo os dois pedidos, ou cada pedido pode ter seu próprio lote e, portanto, duas mensagens de saída de fatura são produzidas.

Para executar a amostra para os pedidos do cliente 111 e 222, as mensagens com as seguintes informações devem ser colocadas nas filas adequadas do WebSphere MQ:

É necessário colocar o arquivo do pedido do número do cliente no diretório criado ao configurar a amostra.

Para executar a amostra para os pedidos do cliente 111 e 222:

  1. É necessário salvar o conteúdo de 111.order e 222.order no diretório criado nas instruções de configuração. Consulte Configurando a Amostra Collector Node. Salve os arquivos como 111.order e 222.order. Esse diretório, com os dois arquivos de pedido, é monitorado pelo nó FileInput, fileinput. Essa ação entrega os detalhes do pedido ao fluxo como um arquivo e determina o número do cliente a partir do nome do arquivo.

    Nota: Se o fluxo de mensagens estiver em execução, os arquivos 111.order e 222.order são lidos e, em seguida, quase que imediatamente removidos e, portanto, os arquivos não estarão mais visíveis.

  2. Abra o arquivo CollectorNodeSampleFlowProject/CollectorNodeSample_111_222_orders.mbtest. Esse arquivo contém uma "Fatura" e três "Enfileiramentos" que, no pedido, enviam as mensagens de custo e de pacote do WebSphere MQ para os pedidos 111 e 222. O número do cliente é identificado pelo campo CustomerNumber nas mensagens.
  3. Selecione Fatura, clique em Enviar Mensagem para enviar o custo do pedido 111 para a fila COLL_IN1.
    <Costing>
      <CustomerNumber>111</CustomerNumber>
      <Product>Toaster</Product>
      <UnitPrice>4.99</UnitPrice>
    </Costing>
    
    Essa ação também inicia o listener de mensagem Cliente de Teste do WebSphere MQ que é configurado para continuar atendendo as mensagens em todas as filas de saída e de expiração durante 5 minutos. Quando todas as mensagens forem processadas, para encerrar o listener, clique em Parar (o botão quadrado azul na barra de ferramentas de eventos de fluxo de teste da mensagem) a qualquer momento.
  4. Selecione o primeiro Enfileirar, clique em Enviar Mensagem para enviar a mensagem de pacote do pedido 111 para a fila COLL_IN3.
    <Packaging>
      <CustomerNumber>111</CustomerNumber>
      <Postage>1.95</Postage>
    </Packaging>
    
  5. Selecione o segundo Enfileirar, clique em Enviar Mensagem para enviar a mensagem de custo do pedido 222 para a fila COLL_IN1.
    <Costing>
       <CustomerNumber>222</CustomerNumber>
       <Product>Food Processor</Product>
       <UnitPrice>35.99</UnitPrice>
    </Costing>
    
  6. Selecione o terceiro Enfileirar, clique em Enviar Mensagem para enviar a mensagem de pacote do pedido 222 para a fila COLL_IN3.
    <Packaging>
      <CustomerNumber>222</CustomerNumber>
      <Postage>5.55</Postage>
    </Packaging>
    
  7. O primeiro nó Collector, CollectByCustNum, coleta a mensagem de Custo correspondente do COLL_IN1, o arquivo Pedido da entrada de arquivo e a mensagem Pacote de COLL_IN3 e propaga a coleta para ativar o ESQL no nó Compute1 para produzir uma mensagem de fatura que é propagada para o segundo nó Collector CollectUntilTrigger. Essa ação também ocorre para as mensagens para o pedido 222.
  8. Após cada intervalo de 90 segundos, o nó TimeoutNotification, TimerTrigger, aciona o segundo nó Collector, CollectUntilTrigger, que propaga as mensagens de fatura que foram coletadas para uma mensagem em lote de fatura durante cada período de tempo limite de coleta de 30 segundos.
  9. Quando o segundo nó Collector, CollectUntilTrigger, é propagado, a mensagem de saída resultante é detectada pelos listeners Cliente de Teste do WebSphere MQ que são iniciados como resultado da ação de fatura e a mensagem recebida na fila COLL_OUT é exibida. Normalmente, os dois pedidos são gerados em uma única mensagem em lote, como a seguinte mensagem:
    <Invoices>
      <Invoice>
       <InvoiceNumber>111</InvoiceNumber>
       <Product>Toaster</Product>
       <TotalCost>6.94</TotalCost>
       <Delivery>2 days</Delivery>
      </Invoice>
      <Invoice>
       <InvoiceNumber>222</InvoiceNumber>
       <Product>Food Processor</Product>
       <TotalCost>77.53</TotalCost>
       <Delivery>4 days</Delivery>
      </Invoice>
      <Date>2009-10-16</Date>
      <Time>19:24:34</Time>
    </Invoices>
    
    Entretanto, como o nó Collector é acionado a cada 90 minutos, você pode não ter enfileirado as mensagens em um único intervalo, portanto, poderá receber duas mensagens de fatura separadas, uma para a fatura 111 e a outra para a fatura 222.

Execute a amostra para enviar o pedido do cliente 333

  1. Salve o conteúdo do arquivo 333.order no diretório criado nas Instruções de Configuração. Por exemplo:

    Nota: Se o fluxo de mensagens estiver em execução, o arquivo 333.order é lido e, em seguida, quase que imediatamente removido, portanto, o arquivo não estará mais visível.

  2. Abra o arquivo CollectorNodeSampleFlowProject/CollectorNodeSample_333_orders.mbtest. Esse arquivo contém uma "Fatura" e três "Enfileiramentos" que envia, no pedido, as mensagens de custo e de pacote do WebSphere MQ para os pedidos 333.
  3. Selecione Fatura, clique em Enviar Mensagem para enviar o custo do pedido 333 para a fila COLL_IN1.
    <Costing>
      <CustomerNumber>333</CustomerNumber>
      <Product>Kettle</Product>
      <UnitPrice>5.99</UnitPrice>
    </Costing>
    
    Essa ação também inicia o listener de mensagem Cliente de Teste do WebSphere MQ que continua atendendo as mensagens em todas as filas de saída e de expiração durante 5 minutos. Quando todas as mensagens forem processadas, para encerrar o listener, clique em Parar (o botão quadrado azul na barra de ferramentas de eventos de fluxo de teste da mensagem) a qualquer momento.
  4. Selecione Enfileirar, clique em Enviar Mensagem para enviar a mensagem de pacote do pedido 333 para a fila COLL_IN3.
    <Packaging>
      <CustomerNumber>333</CustomerNumber>
      <Postage>2.05</Postage>
    </Packaging>
    
  5. Salve o conteúdo do arquivo 333.order no diretório criado nas instruções de configuração.
  6. As mensagens e o arquivo são processados e, após o lote, um lote de fatura de saída contendo a fatura 333 é recebida e exibida pelo listener Cliente de Teste que está em execução como resultado da ação de chamada.
    <Invoices>
      <Invoice>
        <InvoiceNumber>333</InvoiceNumber>
        <Product>Kettle</Product>
        <TotalCost>8.04</TotalCost>
        <Delivery>2 days</Delivery>
      </Invoice>
      <Date>2009-10-16</Date>
      <Time>19:28:03</Time>
    </Invoices>
    

A saída dos três pedidos

A mensagem de saída em CollectorNodeSample_111_222_orders.mbtest contém as faturas para os pedidos do cliente 111 e 222. As mensagens de saída possuem o seguinte formato:

<Invoices>   <Invoice>
    
<InvoiceNumber>111</InvoiceNumber>
     
<Product>Torradeira</Product>
     
<NumberOrdered>1</NumberOrdered>
     
<TotalCost>8,94</TotalCost>
      <Delivery>2
dias</Deliver>     
 </Invoice>   <Invoice>
    
<InvoiceNumber>222</InvoiceNumber>
      <Product>Processador de
Alimentos</Product>      
<NumberOrdered>2</NumberOrdered>
     
<TotalCost>75,93</TotalCost>
      <Delivery>4
dias</Deliver>     
 </Invoice>  <Date>10-08-2007</Date>
 <Time>17:18:22</Time> </Invoices> 

A mensagem de saída mostra como o primeiro nó Collector, CollectByCustNum, coletou os pedidos do cliente 111 e 222 para criar duas coletas de mensagens. Cada coleta foi propagada para o primeiro nó Compute, onde os dados da coleta para cada pedido são combinados para se criar uma fatura. Duas mensagens são propagadas pelo nó Compute, uma para cada pedido do cliente. Quando essas mensagens chegarem no segundo nó Collector, CollectUntilTrigger, uma coleta de mensagem é concluída a cada 15 segundos, para que essas duas mensagens sejam incluídas na mesma coleta.

A mensagem de saída em CollectorNodeSample_333_orders.mbtest contém a fatura para o pedido do cliente 333.

<Invoices>   <Invoice>     
<InvoiceNumber>333</InvoiceNumber>
     
<Product>Chaleira</Product>
     
<NumberOrdered>1</NumberOrdered>
     
<TotalCost>9,94</TotalCost>
      <Delivery>2
dias</Deliver>     
 </Invoice>   
<Date>10-08-2007</Date>
 <Time>17:18:22</Time> </Invoices> 

O primeiro nó Collector, CollectByCustNum, coleta o pedido do cliente 333 para criar uma coleta. Essa coleta é, então, propagada para o primeiro nó Compute, onde os dados da coleta para o pedido são combinados para criar uma fatura. Em seguida, essa mensagem é propagada para o segundo nó Collector, CollectUntilTrigger. Esse nó conclui uma coleta a cada 15 segundos, de forma que esse pedido chega após a coleta que contém os pedidos 111 e 222 ser concluída e é incluído em uma nova coleta.

A coleta concluída que contém os pedidos 111 e 222 e a coleta concluída que contém o pedido 333 são mantidas no nó Collector CollectUntilTrigger até o intervalo de tempo da TimeoutNotification expirar. Após 300 segundos, quando o tempo limite tiver expirado, todas as coletas concluídas são propagadas para o nó Compute final. Neste nó Compute, as seguintes duas mensagens são geradas:

Ambas as mensagens contêm as mesmas informações de registro de data e hora, pois são propagadas ao último nó Compute ao mesmo tempo, ou seja, quando o intervalo de tempo limite tiver expirado.

Nota: Você pode receber a mensagem de fatura de saída para o pedido do cliente 333 no arquivo CollectorNodeSample_111_222_orders.mbtest e vice-versa, porque as duas mensagens são propagadas a partir do nó Collector ao mesmo tempo e pode chegar na fila de saída COLL_OUT em qualquer ordem.

Arquivos de rastreio produzidos pelos nós Trace no fluxo.

Três nós Trace são incluídos no fluxo de mensagens CollectorNodeSample. Dois nós são colocados após um nó Collector para mostrar a árvore de mensagens que é criada pelo nó Collector para cada coleta de mensagens. O nó de rastreio Trace1 é colocado após o nó Collector CollectByCustNum e o nó Trace Trace2 é colocado após o nó Collector CollectUntilTrigger. O terceiro nó Trace é colocado após o nó TimeoutNotification TimerTrigger e registra os acionadores do nó TimeoutNotification.

Todos os nós Trace gravam no mesmo arquivo, collectorNodeSample.trc, e incluem o texto de gravação que define onde a saída é proveniente e um registro de data e hora. Este cenário permite analisar esse arquivo de rastreio para observar os eventos sequenciais conforme o cronômetro emite um sinal sonoro e as coletas são formadas e propagadas.

É possível localizar o arquivo de rastreio collectorNodeSample.trc nos seguintes locais:

Os seguintes links para rastrear as saídas mostram exemplos da saída dos dois nós Trace. O início de cada coleta de mensagens é realçado em azul e o início da subárvore de cada terminal Input e os dados da mensagem de cada terminal Input são realçados em vermelho.

Determinação de problema

Se as mensagens forem enviadas para a fila COLL_EXPIRE1, a coleta de mensagens não foi concluída antes que o tempo limite no nó Collector CollectByCustNum expire. Um motivo pode ter sido o fato de uma das entradas dos dois nós MQInput ou do nó FileInput não ter recebido antes da coleta expirar. O tempo de expiração no nó CollectByCustNum é configurado para 300 segundos. Se você receber uma mensagem na fila COLL_EXPIRE1, tente executar a amostra novamente e insira o arquivo e as mensagens do Websphere MQ dentro do tempo limite de 300 segundos.

Se o evento Chamar atingir o tempo limite sem receber nenhuma mensagem, e não houver nenhuma mensagem em COLL_EXPIRE1, uma mensagem poderá ser colocada no COLL_OUT após o Cliente de Teste parar a espera. Verifique o comprimento da fila com o WebSphere MQ Explorer. É necessário estender o tempo de espera do Cliente de Teste a partir do padrão de 120 segundos para 300 segundos, conforme especificado nas instruções de configuração. Dependendo de quão rapidamente você executa as etapas 1 a 6, poderá demorar mais de 2 minutos para uma mensagem ser produzida.

Voltar para o Início da Amostra