Exemplo: Dividindo um Arquivo de Texto com um Delimitador de Expressão Regular e Incluindo o Delimitador nas Mensagens

Transfira um único arquivo de texto para várias mensagens, dividindo o arquivo em cada correspondência de uma determinada expressão regular Java e inclua a correspondência da expressão regular nas mensagens resultantes. Para fazer isso, use os parâmetros -dqdt e -qi do comando fteCreateTransfer.

Sobre esta tarefa

Transfira um único arquivo de texto para várias mensagens em uma fila. O arquivo é dividido em seções de comprimento variável, cada uma delas é gravada em uma mensagem individual. O arquivo de texto é dividido em cada ponto no qual o texto no arquivo corresponde a uma determinada expressão regular. O arquivo de origem é chamado /tmp/customers.text e tem o seguinte conteúdo:
Customer name: John Smith
Customer contact details: john@example.net
Customer number: 314

Customer name: Jane Brown
Customer contact details: jane@example.com
Customer number: 42

Customer name: James Jones
Customer contact details: jjones@example.net
Customer number: 26
A expressão regular que especifica onde dividir o arquivo é Customer\snumber:\s\d+, que corresponde ao texto Número do cliente: seguido por qualquer número de dígitos. Expressões regulares especificadas na linha de comandos devem estar entre aspas duplas para evitar que o shell de comando avalie a expressão regular. A expressão regular é avaliada como uma expressão regular Java. Para obter mais informações, consulte Expressões regulares usadas pelo MFT..

Por padrão, o número de caracteres ao qual uma expressão regular pode corresponder é definido para cinco. A expressão regular usada nesse exemplo corresponde a cadeias que são maiores que cinco caracteres. Para ativar correspondências maiores que cinco caracteres, edite o arquivo de propriedades para incluir a propriedade maxDelimiterMatchLength.

Por padrão, o texto que corresponde à expressão regular não é incluído nas mensagens. Para incluir o texto que corresponde à expressão regular nas mensagens, como nesse exemplo, use o parâmetro -qi. O arquivo de origem está localizado no mesmo sistema que o agente de origem AGENT_NEPTUNE, que se conecta ao gerenciador de filas QM_NEPTUNE. A fila de destino, RECEIVING_QUEUE, está localizada no gerenciador de filas QM_MERCURY. QM_MERCURY também é o gerenciador de filas usado pelo agente de destino AGENT_MERCURY. A transferência divide o arquivo de origem em seções e grava cada uma dessas seções em uma mensagem em RECEIVING_QUEUE.

Procedimento

  1. Pare o agente do destino usando o seguinte comando:
    fteStopAgent AGENT_MERCURY
  2. Inclua a seguinte linha no arquivo de propriedades do agente para AGENT_MERCURY:
    maxDelimiterMatchLength=25
    Nota: Aumentar o valor de maxDelimiterMatchLength pode diminuir o desempenho.
  3. Inicie o agente do destino usando o seguinte comando:
    fteStartAgent AGENT_MERCURY
  4. Digite o seguinte comando:
    fteCreateTransfer -sa AGENT_NEPTUNE -sm QM_NEPTUNE -da AGENT_MERCURY -dm QM_MERCURY 
     -dq RECEIVING_QUEUE
         text -dqdt "Customer\snumber:\s\d+" -qi -dqdp postfix /tmp/customers.text
    O agente de origem, AGENT_NEPTUNE, lê os dados do arquivo /tmp/customers.text e transfere esses dados para o agente de destino, AGENT_MERCURY. O agente de destino, AGENT_MERCURY, grava os dados em três mensagens persistentes na fila RECEIVING_QUEUE. Todas essas mensagens têm o mesmo ID de grupo " IBM® MQ e a última mensagem do grupo tem o sinalizador " IBM MQ LAST_MSG_IN_GROUP definido.
    Os dados nas mensagens são os seguintes.
    • Primeira mensagem:
      Customer name: John Smith
      Customer contact details: john@example.net
      Customer number: 314
      
    • Segunda mensagem:
      Customer name: Jane Brown
      Customer contact details: jane@example.com
      Customer number: 42
      
    • Terceira mensagem:
      Customer name: James Jones
      Customer contact details: jjones@example.net
      Customer number: 26