Utilice el nodo Resequence para controlar la secuencia en la que un grupo (o grupos) de mensajes de entrada se propagan en un flujo de mensajes.
Este tema contiene las secciones siguientes:
El nodo Resequence controla la secuencia en la que se va a propagar un grupo (o grupos) de mensajes de entrada a través del nodo de un flujo de mensajes.
Puede utilizar un nodo Resequence para organizar los grupos de mensajes en orden secuencial según un número de secuencia en el mensaje. Cada mensaje debe contener un número de secuencia, que puede ser cualquier entero positivo o negativo. El número de secuencia se calcula mediante una expresión XPath definida en la propiedad Vía de acceso al número de secuencia en el nodo, y puede ser un número añadido al mensaje mediante un nodo Secuencia.
El nodo Resequence puede reordenar varios grupos de forma independiente unos de otros, pero no puede reordenar mensajes entre grupos de secuencia distintos. El grupo al cual pertenece un mensaje viene determinado por las propiedades del nodo Resequence.
Cada grupo de secuencias se puede asociar únicamente a un nodo Resequence. Varios nodos Resequence pueden tener un grupo de secuencias con el mismo nombre, pero cada uno de esos grupos de secuencia se trata como un grupo aparte. Se utiliza la combinación del nombre del grupo de ejecución, el nombre del flujo de mensajes, el nombre del nodo y el nombre del grupo de secuencias para diferenciar los grupos de secuencia.
Por ejemplo, podría tener un flujo de mensajes denominado flow1 que contenga un nodo Resequence denominado node1, que se despliega en un grupo de ejecución denominado eg1. Se envía un mensaje al mismo utilizando un grupo de secuencias denominado group1. El resultado es eg1/flow1/node1/group1. El mismo flujo de mensajes en un grupo de ejecución distinto, por ejemplo eg2, daría como resultado eg2/flow1/node1/group1.
Puede configurar un nodo Resequence para que utilice diversas hebras para propagar mensajes, pero sólo si cada uno de los mensajes que se van a propagar pertenece a un grupo de secuencias distinto. Para los mensajes que pertenezcan al mismo grupo de secuencias, sólo se puede utilizar una hebra a la vez para propagar mensajes. En consecuencia, se conserva el orden secuencial de mensajes de un mismo grupo de secuencias, pero no se mantiene el orden entre grupos.
Se produce una interrupción en la transacción en el nodo Resequence. Los mensajes que llegan al nodo no se propagan directamente al terminal de salida; todos los mensajes (incluyendo el siguiente mensaje de la secuencia) se serializan inicialmente a una cola interna de WebSphere MQ. El almacenamiento de los mensajes se produce en la transacción actual; una vez almacenado, se ha completado la transacción. Si un mensaje almacenado es el siguiente de la secuencia, se propaga por el flujo de mensajes bajo una nueva transacción. Sólo la parte serializable de los datos se propaga desde el nodo; no se conserva el entorno local, el entorno ni las listas de excepciones.
Si se producen excepciones en los nodos siguientes al nodo Resequence se retrotraen al terminal de captación del nodo Resequence. Si terminal de captación (Catch) no está conectado a ningún otro nodo, los mensajes de reenvían al terminal de origen (Out, Missing o Expired). Los mensajes nunca se retiran ni se descartan.
Para obtener información sobre los diversos estados y transiciones de estado del nodo Resequence, consulte Máquinas de estados de nodos Resequence.
El nodo Resequence se encuentra en la bandeja Direccionamiento de la paleta y está representado en el WebSphere Message Broker Toolkit mediante el siguiente icono:
Puede ver información sobre los ejemplos sólo cuando utilice el Information Center que está integrado en WebSphere Message Broker Toolkit o el Information Center en línea. Puede ejecutar ejemplos sólo cuando utilice el Information Center que está integrado en WebSphere Message Broker Toolkit.
Cuando haya colocado una instancia del nodo Resequence en un flujo de mensajes, podrá configurarlo; consulte el tema Configurar un nodo de flujo de mensajes. Las propiedades del nodo se muestran en la vista Propiedades.
Todas las propiedades obligatorias que no tienen un valor predeterminado aparecen con un asterisco.
Configure el nodo Resequence:
Se siguen recopilando mensajes mientras la expresión se evalúa a False. Cuando la expresión de un mensaje se evalúa a True, indica que el mensaje es el primero de la secuencia.
Tipo de datos devueltos | True | False |
---|---|---|
Boolean (booleano) | True | False |
Numeric (numérico) | Cualquier valor distinto de cero | 0 o 0.0 |
String (serie) | Cualquier serie que coincida con true (no sensible a mayúsculas y minúsculas) | Cualquier serie que no coincida con true (no sensible a mayúsculas y minúsculas) |
NodeSet (Conjunto de nodos) | Nunca | Siempre |
Cuando un mensaje evalúa la expresión a True (y, por tanto, se identifica como el inicio de la secuencia), el nodo comprueba que el mensaje tenga el número de secuencia menor recopilado hasta ese momento. Si se encuentran mensajes con números de secuencia más bajos, se genera una excepción.
Cuando el primer mensaje que se evalúa a true se ha procesado satisfactoriamente, no se comprueban las expresiones XPath de los mensajes subsiguientes. Si llega un mensaje con un número de secuencia menor que el mensaje que se ha identificado como el inicio de la secuencia, se genera una excepción.
Generalmente, la expresión XPath se evalúa en un Booleano; sin embargo, si se devuelven otros tipos de datos, el predicado se determina tal como se muestra en la Tabla 1.
Cuando el predicado se evalúa en True, se asigna el número de secuencia del mensaje a la propiedad Definición de fin de secuencia .
Cuando se recibe un mensaje con el predicado fin de secuencia establecido en True, el grupo de secuencias permanece abierto y espera mensajes hasta que expira el tiempo indicado en la propiedad Tiempo de espera de mensajes que faltan. Todos los mensajes que llegan hasta este momento se incluyen en el grupo (a menos que estén duplicados o fuera del rango permitido) hasta que se cierra el grupo de secuencias. Una vez cerrado el grupo de secuencias, cualquier nuevo mensaje que llegue al nodo para ese grupo se trata como perteneciente a una nueva instancia del grupo.
Si llega un mensaje con el predicado fin de secuencia establecido en True y con un número menor de secuencia que un mensaje que ya ha llegado, se genera una excepción.
Cuando se supera el plazo especificado, los mensajes se propagan en orden secuencial al terminal de caducidad. Los mensajes posteriores del grupo de secuencias también se direccionan al terminal de caducidad. Si finalmente llega el mensaje que falta, se propaga al terminal Missing (que falta).
Se pueden utilizar diversas hebras para propagar mensajes desde un mismo nodo Resequence, pero sólo si cada uno de los mensajes que se propagan pertenece a un grupo de secuencias distinto. Para los mensajes que pertenezcan al mismo grupo de secuencias, sólo se puede utilizar una hebra a la vez para propagar mensajes. En consecuencia, se conserva el orden secuencial de mensajes de un mismo grupo de secuencias, pero no se mantiene el orden entre grupos.
Para obtener más información sobre sobre cómo especificar instancias adicionales, consulte Propiedades configurables del flujo de mensajes.
Los terminales del nodo Resequence se describen en la tabla siguiente.
Terminal | Descripción |
---|---|
Entrada | El terminal de entrada a través del cual llega al nodo el mensaje ensamblado de entrada. |
Anomalía | El terminal de salida al que se direcciona el mensaje si se produce un error. Este valor incluye anomalías provocadas por el proceso de reintento. |
Salida | El terminal de salida al cual se propaga de forma predeterminada el mensaje de salida. |
Expire (de caducidad) | El terminal de salida al cual se direcciona el mensaje si se produce un tiempo de espera mientras el nodo está a la espera de que llegue el mensaje. Todos los mensajes posteriores del mismo grupo se propagarán también a ese terminal. |
Missing (que falta) | El terminal de salida al cual se direccionan el mensaje que falta (que ha provocado que se excediera el tiempo de espera) si éste llega posteriormente al nodo. |
Catch (de captación) | El terminal de salida al que se direcciona un mensaje si se emite una excepción en sentido descendente y después este nodo la capta. Las excepciones se detectan sólo si este terminal está conectado. |
Las tablas siguientes describen las propiedades del nodo. La columna con la cabecera O indica si la propiedad es obligatoria (marcada con un asterisco si tiene que entrar un valor cuando no hay definido ningún valor predeterminado); la columna con la cabecera C indica si la propiedad es configurable (puede cambiar el valor cuando añade el flujo de mensajes al archivo BAR para desplegarlo).
En la tabla siguiente se describen las propiedades de descripción del nodo Resequence.
Propiedad | M | C | Valor predeterminado | Descripción |
---|---|---|---|---|
Nombre de nodo | No | No | Resequence | El nombre del nodo. |
Descripción corta | No | No | Descripción breve del nodo. | |
Descripción larga | No | No | Texto que describe la finalidad del nodo en el flujo de mensajes. |
En la tabla siguiente se describen las propiedades básicas del nodo Resequence.
Propiedad | M | C | Valor predeterminado | Descripción |
---|---|---|---|---|
Vía de acceso de número de secuencia | Sí | No | Una expresión XPath que calcula el número de secuencia del mensaje. | |
Vía de acceso de identificador de grupo de secuencias | No | No | Una expresión XPath que calcula el identificador de grupo de secuencias. Los mensajes que tienen el mismo identificador de grupo se consideran parte del mismo grupo de secuencias. Esta propiedad funciona del mismo modo que la propiedad Vía de acceso de correlación en el nodo Collector. | |
Definición de inicio de secuencia | Sí | No | Literal, 0 | Especifica el primer número de secuencia de cada grupo. Los valores válidos son:
|
Definición de fin de secuencia | Sí | No | Automática | Especifica cuándo se ha completado cada grupo de secuencias. Los valores válidos son:
|
Tiempo de espera de mensajes que faltan (segundos) | No | No | Especifica cuánto tiempo (en segundos) espera el nodo el próximo mensaje de la secuencia antes de pasar al siguiente. Esta propiedad se sobrescribe con la propiedad Tiempo de espera de mensajes que faltan, si se ha establecido, del servicio configurable Resequence. |
Propiedad | M | C | Valor predeterminado | Descripción |
---|---|---|---|---|
Agrupación de instancias adicionales | No | Sí | Utilizar agrupación asociada al flujo de mensajes | La agrupación de la que se obtienen instancias adicionales.
|
Instancias adicionales | No | Sí | 0 | El número de instancias adicionales que el nodo puede iniciar si la propiedad Agrupación de instancias adicionales se establece en Utilizar agrupación asociada al nodo. |
En la tabla siguiente se describen las propiedades Avanzadas del nodo Resequence.
Propiedad | M | C | Valor predeterminado | Descripción |
---|---|---|---|---|
Modalidad de persistencia | Sí | No | No persistente | Especifica si se van a almacenar secuencias incompletas de mensajes de forma persistente. Las opciones válidas
son:
|
Servicio configurable | No | Sí | Ninguno establecido | Esta propiedad especifica el nombre de un servicio configurable Resequence que debe utilizar el nodo Resequence. Las propiedades establecidas por el servicio configurable Resequence alteran temporalmente las propiedades equivalentes establecidas en el nodo Resequence. Para obtener más información sobre las propiedades que puede establecer con este servicio configurable, consulte Propiedades de servicios configurables. |
Propiedad | O | C | Valor predeterminado | Descripción |
---|---|---|---|---|
Sucesos | No | No | Ninguno | Los sucesos que se han definido para el nodo se visualizan en este separador. De forma predeterminada, no se define ningún suceso de supervisión en ningún nodo en un flujo de mensajes. Utilice Añadir, Editar y
Suprimir para crear, cambiar o suprimir sucesos de supervisión para el nodo; consulte Configuración de orígenes de sucesos de supervisión utilizando propiedades de supervisión para obtener detalles. Puede habilitar e inhabilitar sucesos que se muestran aquí seleccionando o deseleccionando el recuadro Habilitado. |