Ampliación del ejemplo de Direccionamiento de mensajes utilizando un archivo

Puede modificar el ESQL del ejemplo de Direccionamiento de mensajes para poder utilizarlo en otros flujos de mensajes con muy pocos cambios.

Modificar los criterios de renovación de memoria caché

La memoria caché se está renovando actualmente cuando un mensaje de renovación se envía a la cola ROUTING.REFRESH.

Pueden utilizarse otros criterios para decidir cuándo se debe renovar la memoria caché, por ejemplo:

Para cambiar el criterio, edite la ubicación siguiente en el ESQL:

IF CacheFile.valid IS NOT NULL THEN

Para cambiar los criterios de renovación para que se utilice un periodo de tiempo de 60 segundos:

  1. Cambie el criterio encerrado en un círculo rojo en el ESQL por:
    IF CacheFile.LastUpDate is not null and (CURRENT_TIMESTAMP - 
        CacheFile.LastUpDate) second < INTERVAL '60' SECOND THEN
  2. Cambie también la segunda instancia de
    IF CacheFile.Valid is not null THEN
    para que sea igual que en el paso anterior.
  3. Cambiar
    SET CacheFile.valid = true;
    a
    SET CacheFile.LastUpDate = CURRENT_TIMESTAMP;

Utilización del desplazamiento de registros en lugar de la expresión para propagar registros

Actualmente, el ejemplo elige el registro que se va a propagar estableciendo la expresión de selección de registro. Puede ocurrir que cada vez que se envíe un mensaje, desee recuperar el registro siguiente en el archivo. Esta acción se puede conseguir estableciendo el desplazamiento.

Propiedad Desplazamiento

Puede utilizar la propiedad de desplazamiento de la siguiente manera:

  1. En el flujo de mensajes Routing_using_records_file, añada dos nodos Compute, uno antes del nodo FileRead y el otro, después.
  2. En el ESQL, cree una variable compartida:
    declare cache SHARED ROW;
  3. En el ESQL del primer nodo Compute, añada el código siguiente:
    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;	
    		
    Establezca la propiedad Modalidad de cálculo en LocalEnvironment.
  4. En el ESQL del segundo nodo Compute, añada el código siguiente:
    SET OutputLocalEnvironment = InputLocalEnvironment;
    SET cache.file.offset = OutputLocalEnvironment.File.Read.NextRecordOffset;
    Establezca la propiedad Modalidad de cálculo en LocalEnvironment.
  5. En el nodo FileRead, establezca la propiedad Expresión de selección de registro en true()
  6. Para dirigir el flujo de mensajes, utilice File_Records_file_message1.mbtest y pulse Colocar en cola varias veces. De este modo se leerá cada registro uno por uno.

Utilización del direccionamiento a etiqueta en lugar de a una cola

En el ejemplo se muestra cómo se direcciona un mensaje a una cola en particular. Otro uso puede ser direccionar a una etiqueta. Para implementar ésta, utilice las siguientes instrucciones:

  1. En el flujo de mensajes, Routing_using_records_file, en el nodo FileRead, cambie la propiedad Ubicación de datos de salida por $OutputLocalEnvironment/Destination/RouterList/DestinationData/labelName
  2. Cambie la propiedad Ubicación de datos de resultado por $ResultRoot/MRM/data/labelName. Cambie la propiedad Conjunto de mensajes de queueName a labelName.
  3. Añada un nodo RouteToLabel después del nodo FileRead y elimine el nodo MQOutput.
  4. Añada varios nodos Label.
  5. Actualice fileRead.csv y cambie los nombres de cola por nombres de etiqueta.
  6. Establezca las propiedades Nombre de etiqueta de cada uno de los nodos Label en los nombres de las etiquetas que ha establecido en fileRead.csv.
  7. Después de cada nodo Label, añada un nodo MQOutput y especifique el nombre de cola.

Puede sustituir los nodos MQOutput por otros tipos de nodo de salida. Por ejemplo, utilice un flujo utilizando un nodo RouteToLabel:

Direccionar a etiqueta

Volver a la página inicial del ejemplo