Está en la página 1de 2

Ampliar el ejemplo de Proceso de tiempo de espera

excedido
Un nodo Timeout Control se asocia a un nodo Timeout Notification al configurar ambos nodos con el
mismo identificador. El ejemplo ControlledTimeout muestra que se puede asociar ms de un nodo Timeout
Control a un nodo Timeout Notification. Esto significa que se pueden actualizar o cancelar peticiones de
tiempo de espera excedido procesadas a travs de un nodo Timeout Control utilizando cualquiera de los
otros nodos Timeout Control asociados al mismo nodo Timeout Notification. Intntelo - el mtodo ms
sencillo es editar los archivos .mbtest de cancelacin que se van a grabar en la otra cola de entrada, de
modo que los procese el otro nodo. Una opcin ms avanzada consiste en cambiar el campo
<AllowOverwrite> en la peticin de tiempo de espera excedido a TRUE, lo que significa que el nodo
Timeout Control descarta la peticin de tiempo de espera excedido que se est ejecutando en ese
momento en favor de la nueva peticin entrante (que coincide en el cdigo <Identifier> en la peticin
de tiempo de espera excedido propiamente dicha). Tambin puede crear nuevos mensajes de peticin de
tiempo de espera excedido con identificadores de tiempo de espera excedido distintos para probar el
proceso de varios tiempos de espera excedidos concurrentes.
En el ejemplo, la peticin de tiempo de espera excedido est contenida en el cuerpo del mensaje. Es
posible pasarla a cualquier sitio del rbol de mensaje y, a menos que se indique lo contrario durante la
configuracin, el nodo Timeout Control la buscar en LocalEnvironment. Para utilizar este mtodo, debe
aadirse un nodo Compute en alguna parte antes del nodo Timeout Control para introducir esta
informacin, como muestra este ESQL, que tambin muestra cmo se puede establecer el identificador de
tiempo de espera excedido para que sea dinmico y evitar conflictos:
CREATE COMPUTE MODULE Timeout_Set
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
SET OutputRoot = InputRoot;
SET OutputLocalEnvironment.TimeoutRequest.Action = 'SET';
SET OutputLocalEnvironment.TimeoutRequest.Identifier =
OutputRoot.XMLNSC.Data.UniqueId;
SET OutputLocalEnvironment.TimeoutRequest.StartDate = 'TODAY';
SET OutputLocalEnvironment.TimeoutRequest.StartTime = 'NOW';
SET OutputLocalEnvironment.TimeoutRequest.Count = 10;
SET OutputLocalEnvironment.TimeoutRequest.Interval = 5;
RETURN TRUE;
END;
END MODULE;
No olvide establecer el nodo Compute en "Pass Message and LocalEnvironment". Despus, deber
cambiar el nodo Timeout Control para que tenga una Ubicacin de peticiones en blanco, si se ha
cambiado el valor predeterminado:

Finalmente, este ESQL muestra cmo establecer un tiempo de espera nico de 60 segundos en el futuro
generando una hora relativa:
CREATE COMPUTE MODULE UT_CONTROL_TIMEOUT_10
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
SET OutputRoot = InputRoot;
DECLARE jump INTERVAL;
SET jump = INTERVAL '60' SECOND;
DECLARE start TIME;
SET start = CURRENT_TIME + jump;
SET OutputLocalEnvironment.TimeoutRequest.Action = 'SET';
SET OutputLocalEnvironment.TimeoutRequest.Identifier = 'control';
SET OutputLocalEnvironment.TimeoutRequest.StartDate = 'TODAY';
SET OutputLocalEnvironment.TimeoutRequest.StartTime = start;
RETURN TRUE;
END;
END MODULE;
Volver a la pgina inicial del ejemplo

También podría gustarte