Altere a sequência de mensagens recebidas do
WebSphere MQ, para que elas sejam propagadas na ordem correta
usando um número de sequência definido em uma mensagem XML.
Nesta tarefa de exemplo, a sequência é definida como iniciando no número de
sequência 0 (que é o padrão) e terminando no número de sequência 8. O fluxo de mensagens é configurado para
que mensagens possam chegar fora de ordem mas não possam ser propagadas fora de ordem, mesmo se um dos
números de sequência nunca chegar.
As etapas a seguir mostram como gravar um fluxo de mensagens que
pode receber o documento XML do WebSphere MQ, reordenar as
mensagens com base em um número de sequência em uma mensagem XML (neste exemplo o caminho
$Root/XMLNSC/Doc/SeqNo é usado) e gravar em uma fila do WebSphere MQ:
- Crie um fluxo de mensagens chamado Resequence_Task1, contendo um nó
MQInput, um nó
Resequence e um nó
MQOutput. Para informações adicionais sobre como fazer isto, consulte Criação de um Fluxo de Mensagens.
- Conecte o terminal Out do nó MQInput
ao terminal In do nó Resequence.
- Conecte o terminal Out do nó Resequence
ao terminal In do nó MQOutput.
- Configure as seguintes propriedades do nó MQInput:
- Na guia Básico, configure a propriedade Nome da
Fila como RESEQUENCE_TASK1_IN1
- Na guia Análise de Mensagem de Entrada, configure a
propriedade Domínio de Mensagem como XMLNSC.
- No nó Resequence, configure as propriedades a seguir na guia
Básico:
- Configure a propriedade Caminho para número de sequência como
$Root/XMLNSC/Doc/SeqNo
- Configure a propriedade Definição de Fim da Sequência como
Literal com um valor igual a
8.
- No nó MQOutput, configure a propriedade
Nome da Fila (na guia Básico) como
RESEQUENCE_TASK1_OUT1.
- Salve o fluxo de mensagens.
Processamento de mensagens no fluxo de mensagens:
Esta seção descreve a maneira na
qual o nó Resequence processa as mensagens que entram no fluxo de
mensagens.
- As seguintes mensagens chegam na fila do WebSphere MQ
RESEQUENCE_TASK1_IN1:
<Doc><SeqNo>0</SeqNo></Doc>,<Doc><SeqNo>1</SeqNo></Doc>,<Doc><SeqNo>2</SeqNo></Doc>,
<Doc><SeqNo>3</SeqNo></Doc>,<Doc><SeqNo>4</SeqNo></Doc>,<Doc><SeqNo>5</SeqNo></Doc>,
<Doc><SeqNo>6</SeqNo></Doc>,<Doc><SeqNo>7</SeqNo></Doc>,<Doc><SeqNo>8</SeqNo></Doc>,
- O nó Resequence primeiro recebe a mensagem com o número de
sequência 0. O nó Resequence cria um novo grupo de sequências para
gerenciar o processo de reordenação; o novo grupo de sequências é um grupo padrão porque nenhum grupo de
sequências foi definido na mensagem. A mensagem (com número de sequência 0) é a primeira na sequência,
portanto, ela é propagada para o terminal Out.
- O nó Resequence, em seguida, recebe o restante das mensagens
até, e incluindo, o número de sequência 8, e as propaga na ordem na qual elas chegaram.
Cada mensagem é armazenada antes de ser propagada e uma transação diferente é usada para propagar o
recebimento de dados das mensagens a partir do nó Resequence.
- Quando a mensagem contendo o número de sequência 8 é processada, o grupo de sequências é fechado. Qualquer nova mensagem no mesmo grupo que chega posteriormente faz com que um novo grupo seja criado.
- As próximas mensagens chegam na fila RESEQUENCE_TASK1_IN1:
<Doc><SeqNo>8</SeqNo></Doc>,<Doc><SeqNo>7</SeqNo></Doc>,<Doc><SeqNo>6</SeqNo></Doc>,
<Doc><SeqNo>5</SeqNo></Doc>,<Doc><SeqNo>4</SeqNo></Doc>,<Doc><SeqNo>3</SeqNo></Doc>,
<Doc><SeqNo>2</SeqNo></Doc>,<Doc><SeqNo>1</SeqNo></Doc>,<Doc><SeqNo>0</SeqNo></Doc>,
- O nó Resequence primeiro recebe a mensagem contendo o número
de sequência 8. Neste ponto, o nó Resequence cria um novo grupo de
sequências (padrão). A mensagem é a última na sequência, portanto, ela não é propagada mas é armazenada
internamente.
- O nó Resequence, então, recebe o restante das mensagens até e
incluindo o número de sequência 0. Todas as mensagens são armazenadas e nenhuma é propagada até que o
primeiro número na sequência seja recebido (neste caso, número de sequência 0).
- Quando a mensagem com o número de sequência 0 é recebida, ela é propagada pelo fluxo de mensagens,
seguida por cada uma das outras mensagens, na ordem, até a mensagem final (número de sequência 8) ser
propagada.
Neste ponto, o grupo de sequências é fechado novamente.