Estendendo a Amostra Message Routing Usando um Arquivo

Você pode modificar a amostra de Roteamento de Mensagem ESQL de forma que possa usá-la em outros fluxos de mensagem com poucas alterações.

Alterando os Critérios de Atualização do Cache

O cache é atualizado atualmente quando uma mensagem de atualização for enviada para a fila ROUTING.REFRESH.

Outros critérios podem ser usados para decidir quando atualizar o cache, por exemplo.

Para alterar os critérios, edite o seguinte local no ESQL:

IF CacheFile.valid IS NOT NULL THEN

Para alterar os critérios de atualização para utilizar um período de tempo de 60 segundos:

  1. Altere o critério circulado em vermelho no ESQL para:
    IF CacheFile.LastUpDate is not null and (CURRENT_TIMESTAMP -
        CacheFile.LastUpDate) second < INTERVAL '60' SECOND THEN
  2. Altere também a segunda instância de
    IF CacheFile.Valid is not null THEN
    para a mesma como na etapa anterior
  3. Alteração
    SET CacheFile.valid = true;
    a
    SET CacheFile.LastUpDate = CURRENT_TIMESTAMP;

Usando a compensação de registro em vez de propagar a expressão de registro

Atualmente, a amostra escolhe qual registro será propagado ao configurar a expressão de seleção de registro. Esso pode ser o caso em que, sempre que uma mensagem é enviada, você deseja recuperar o próximo registro no arquivo. Essa ação pode ser feita ao configurar a compensação.

Propriedade de compensação

É possível usar a propriedade de deslocamento da seguinte maneira:

  1. No fluxo de mensagens Routing_using_records_file, inclua dois nós Compute, um antes do nó FileRead e outro depois.
  2. No ESQL, crie uma variável compartilhada:
    declare cache SHARED ROW;
  3. No ESQL do primeiro nó Compute, inclua o seguinte código:
    SET OutputLocalEnvironment = InputLocalEnvironment;
    		IF (cache.file.offset > 0) THEN
              SET OutputLocalEnvironment.Destination.File.Offset = cache.file.offset;
              ELSE
              SET OutputLocalEnvironment.Destination.File.Offset = 0;
              END IF;	
    		
    Configure a propriedade Modo Compute para LocalEnvironment.
  4. No ESQL do segundo nó Compute, inclua o seguinte código:
    SET OutputLocalEnvironment = InputLocalEnvironment;
    SET cache.file.offset = OutputLocalEnvironment.File.Read.NextRecordOffset;
    Configure a propriedade Modo Compute para LocalEnvironment.
  5. No nó FileRead, configure a propriedade Expressão de Seleção de Registro para true()
  6. Para direcionar o fluxo de mensagens, use File_Records_file_message1.mbtest e clique para enfileirar várias vezes. Isso lerá em cada registro por vez.

Usando a rota no rótulo em vez de na fila.

A amostra exibe como rotear uma mensagem para uma determinada fila. Outro uso pode ser um roteamento para um rótulo. Para implementar esse uso, use as seguintes instruções:

  1. No fluxo de mensagens, Routing_using_records_file, no nó FileRead, altere a propriedade Local de Dados de Saída para $OutputLocalEnvironment/Destination/RouterList/DestinationData/labelName
  2. Altere a propriedade Local de Dados de Resultado para $ResultRoot/MRM/data/labelName. Altere a propriedade Conjunto de Mensagens de queueName para labelName.
  3. Inclua um nó RouteToLabel após o nó FileRead e remova o nó MQOutput.
  4. Inclua vários nós Label.
  5. Atualize fileRead.csv e altere os nomes da fila para os nomes de rótulo.
  6. Configure as propriedades Nome do Rótulo para cada um dos nós Label para os nomes de rótulos que você configurou em fileRead.csv.
  7. Depois de cada nó Label, inclua um nó MQOutput e especifique o nome da fila.

É possível substituir os nós MQOutput por outros tipos de nó de saída. Por exemplo, use um fluxo usando um nó RouteToLabel:

Rotear para o Rótulo

Voltar para Home da Amostra