Timeout Control 노드는 동일한 ID로 구성된 두 노드에 의해 Timeout Notification 노드와 연관됩니다. ControlledTimeout 샘플에서는 둘 이상의 Timeout Control 노드가 하나의 Timeout Notification 노드와 연관될 수 있음을 보여줍니다. 이는 동일한 Timeout Notification 노드와 연관된 다른 Timeout Control 노드를 사용하여 Timeout Control 노드를 통해 처리한 시간 종료 요청을 갱신 또는 취소할 수 있음을 의미합니다. 시도해 보십시오. 가장 간단한 메소드는 취소 큐에 삽입 파일이 다른 입력 큐에 기록되도록 편집하여 다른 노드에서 처리하는 것입니다. 좀 더 고급 옵션은 시간 종료 요청에 있는 <AllowOverwrite> 필드를 참으로 변경하는 것입니다. 이는 Timeout Control 노드가 수신되는 (시간 종료 요청 자체가 있는 <Identifier> 태그와 일치되는) 새 노드를 위해 현재 실행 중인 시간 종료 요청을 제거한다는 의미입니다. 또한 다른 시간 종료 ID로 새 시간 종료 요청 메시지를 작성하여 다중 동시 시간 종료 처리를 테스트할 수도 있습니다.
샘플에서 시간 종료 요청은 메시지 본문에 포함됩니다. 메시지 트리의 어느 위치든 전달할 수 있으며, 구성 시 달리 설명이 없으면 Timeout Control 노드는 로컬 환경에서 찾을 수 있습니다. 이 작동을 사용하려면, 시간 종료 ID를 동적으로 설정하고 충돌을 예방하는 방법을 보여주는 이 ESQL에서처럼 Timeout Control 노드 앞의 임의 위치에 Compute 노드를 추가해야 합니다.
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;
Compute 노드를 "Pass Message and LocalEnvironment"로 설정하는 것을 잊지 마십시오. 그런 다음 Timeout Control 노드가 디폴트 값에서 변경된 경우 공백의 요청 위치가 되도록 변경해야 합니다.
마지막으로 이 ESQL에서는 상대 시간을 생성하여 이후 60초 동안 시간 종료를 오프로 설정하는 방법을 보여줍니다.
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;