Detalles sobre el subflujo Route para el patrón Distribución de registros en WebSphere MQ: unidireccional.
El comportamiento del subflujo Route depende del valor del parámetro de patrón Direccionamiento:
Si se ha seleccionado Sin direccionamiento, se crea y configura un único nodo MQOutput con los valores de los parámetros de patrón Gestor de colas de salida y Cola de salida. El flujo de direccionamiento es un subflujo que incluye un nodo Passthrough. Los terminales predeterminado y de ruta se incluyen para que este subflujo sea coherente con todos los demás tipos de subflujo de direccionamiento, pero sólo se utiliza el terminal de ruta única.
Un grupo de cuatro parámetros que define una ruta:
Para cada ruta que se define, se crean y se conectan un terminal de salida para el subflujo Route y un nodo MQOutput.
El subflujo Route contiene un nodo Route que se ha configurado con un filtro que direcciona al primer terminal de salida para el que se cumpla la condición KeyLocation = Key Value. Si un elemento de mensaje no coincide con ninguna de las rutas, esta situación se graba en una variable de entorno en el árbol de entorno de intermediario y el mensaje se pasa al terminal predeterminado.
Si la expresión XPATH que define una Ubicación de claves incluye un calificador de espacio de nombres, el código define el espacio de nombres debe añadirse a la tabla Espacio de nombres.
Es posible que aparezca un aviso en el nodo Route parecido al mensaje siguiente: Tabla de filtros: Patrón de filtro: No se ha podido encontrar el elemento de esquema nombre_elemento en la XPath Ubicación de claves = Valor de clave. Este aviso no causa ningún problema al desplegar y ejecutar el patrón de instancia.
Puede especificar varias rutas distintas seleccionando Especificar rutas.
Si se selecciona este valor, las rutas se determinan utilizando valores de los datos de mensaje para buscar el gestor de colas y la cola de una tabla de direccionamiento de base de datos. No se accede directamente a la tabla de direccionamiento, sino que se lee y se almacena en la memoria caché para conseguir una mayor eficiencia.
Si se selecciona este valor se creará un solo terminal Output para el subflujo Route. El terminal Output se conecta a un solo nodo MQOutput que se ha configurado para tener una lista de destinos que la búsqueda ha colocado en el árbol de entorno de intermediario de búsqueda.
El subflujo Route comprueba si es necesario actualizar la memoria caché verificando si el valor de la variable de fila compartida CacheQueueTable.valid se ha establecido en NULL. La variable se establece en NULL cuando el flujo se inicia y cuando Renovación de memoria caché está habilitada y se ha enviado un mensaje de renovación a Renovar cola. Los mensajes de renovación establecen el valor en NULL.
Si es necesario renovar la memoria caché, se busca en la tabla ROUTING_TABLE del origen de datos, especificada en el parámetro de patrón Origen de datos de direccionamiento, para encontrar todas las filas que coinciden con el contexto de direccionamiento de este flujo. El contexto de direccionamiento se define mediante el parámetro de patrón Contexto de datos de direccionamiento, y las filas en las que el campo ROUTING_CONTEXT coincida con este parámetro se leen en una memoria caché en memoria, acción que se efectúa atómicamente, para evitar que se realicen búsquedas mientras las memoria caché se encuentre en un estado incoherente.
La estructura de los datos almacenados en la memoria caché es:
VARIABLE1, VARIABLE2, QUEUE_MANAGER, QUEUE_NAME
La búsqueda se realiza extrayendo uno o dos valores de clave del elemento de mensaje utilizando expresiones ESQL que están definidas como parámetros de patrón. La búsqueda se define utilizando una sentencia en el formato siguiente:
SET KEY = <parámetro de patrón>
Si se especifica una sola clave para seleccionar una o varias filas de los datos de direccionamiento, utilice la cláusula WHERE siguiente para la selección:
WHERE S.VARIABLE1 = KEY1
Si se especifica una segunda clave, utilice la siguiente cláusula WHERE para la selección:
WHERE S.VARIABLE1 = KEY1 y S.VARIABLE2 = KEY2
Esta selección coloca el gestor de colas y la cola en una lista de destinos que utiliza el nodo MQOutput. Pueden devolverse varias filas y los datos de destino incluyen todos los destinos seleccionados. Si no se encuentra ninguna coincidencia, se produce un error de direccionamiento y el mensaje se pasa al terminal de anomalías del subflujo Route.