Estendendo a Amostra Processamento de Tempo Limite

Um nó Timeout Control está associado a um nó Timeout Notification por dois nós que estão sendo configurados com o mesmo Identificador. A amostra ControlledTimeout mostra que mais de um nó Timeout Control pode ser associado a um nó Timeout Notification. Isso significa que você pode atualizar ou cancelar os pedidos de tempo limite processados através de um nó Timeout Control utilizando qualquer um dos outros nós Timeout Control associados ao mesmo nó Timeout Notification. Tente - o método mais simples é editar os arquivos de enfileiramento de cancelamento para que sejam gravados na outra fila de entrada, portanto, eles são processados pelo outro nó. Uma opção mais avançada é alterar o campo <Permitir_Sobrescrição> no pedido de tempo limite para TRUE, o que significa que o nó Timeout Control descarta o pedido de tempo limite atualmente em execução em favor do novo que chega (quando correspondido pela tag <Identifier> no próprio pedido de tempo limite). Você também pode criar novas mensagens de pedido de tempo limite com diferentes identificadores de tempo limite para testar o processamento de vários tempos limites simultâneos.

Na amostra, o pedido de tempo limite fica contido no corpo da mensagem. É possível que ele seja transmitido para qualquer lugar na árvore de mensagens e, a menos que seja indicado de outra forma no tempo de configuração, o nó Timeout Control procurará por ele em LocalEnvironment. Para utilizar esse comportamento, um nó Compute deve ser incluído em qualquer lugar antes que o nó Timeout Control inclua essas informações, conforme mostrado por este ESQL, que também mostra como você pode definir o Identificador de tempo limite para dinâmico e evitar conflitos:

CREATE COMPUTE MODULE Timeout_Set
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
SET OutputRoot = InputRoot;
SET OutputLocalEnvironment.TimeoutRequest.Action = 'SET';
SET OutputLocalEnvironment.TimeoutRequest.Identifier = OutputRoot.XML.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;

Não esqueça de utilizar o nó Compute para "Transmitir Mensagem e LocalEnvironment". Você precisa, então, alterar o nó Timeout Control para que tenha um Local de Pedido em branco, se ele tiver sido alterado do valor padrão:

Local de Pedido do Nó Timeout Control

Finalmente, este ESQL mostra como definir um tempo limite com intervalo de 60 segundos no futuro, gerando um tempo relativo:

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;

Ícone Página Principal   Voltar para Home da Amostra