计算时间间隔

此 ESQL 示例计算将输入 WebSphere MQ 消息放入输入队列和在当前 Compute 节点中处理它之间的时间间隔。

(调用 CURRENT_ datetime 函数时,返回的值与返回到同一节点中另一个调用的值相同。这将确保您可以在单个节点内统一使用该函数。)

 CALL CopyMessageHeaders();
 Declare PutTime INTERVAL;

 SET PutTime = (CURRENT_GMTTIME - InputRoot.MQMD.PutTime) MINUTE TO SECOND;
 
 SET OutputRoot.XML.Test.PutTime = PutTime;

输出消息具有以下格式(尽管实际值有所不同):

<Test>
 <PutTime>INTERVAL &apos;1:21.862&apos; MINUTE TO SECOND</PutTime>
</Test>

以下代码段设置了一个计时器,将在开始处理后经过指定的时间间隔触发该计时器,以检查处理是否已完成。例如,如果在该耗用时间后处理尚未完成,则引发计时器可能会触发某些恢复处理。

超时请求消息的 StartTime 字段被设置为当前时间加上所允许的延时,该延时由流中用户定义的属性定义。(管理员已经将用户定义的属性设置为“HH:MM:SS”格式的字符串。)

DECLARE StartDelyIntervalStr EXTERNAL CHARACTER '01:15:05';

CREATE PROCEDURE ValidateTimeoutRequest() BEGIN

-- Set the timeout period
DECLARE timeoutStartTimeRef REFERENCE TO
          OutputRoot.XMLNSC.Envelope.Header.TimeoutRequest.StartTime;
IF LASTMOVE(timeoutStartTimeRef)
			THEN
-- Already set
		ELSE
-- Set it from the UDP StartDelyIntervalStr
DECLARE startAtTime TIME CURRENT_TIME
          + CAST(StartDelyIntervalStr AS INTERVAL HOUR TO SECOND);
						
-- Convert "TIME 'hh.mm.ss.fff'" to hh.mm.ss format
       -- needed in StartTime field
DECLARE startAtTimeStr CHAR;
SET startAtTimeStr = startAtTime;
SET startAtTimeStr = SUBSTRING(startAtTimeStr FROM 7 FOR 8);
			SET OutputRoot.XMLNSC.Envelope.Header.TimeoutRequest.StartTime 
                            = startAtTimeStr;
END IF;
	END;
相关概念
消息流概述
消息映射概述
相关任务
开发消息流
正在开发 ESQL
将数字运算符用于日期时间值
相关参考
内置节点
ESQL 引用
ESQL INTERVAL 数据类型
ESQL 数字运算符
ESQL 运算符优先级规则
CAST 函数
声明 | 商标 | 下载 | 书库 | 支持 | 反馈
Copyright IBM Corporation 1999, 2006 最后一次更新时间:2006/08/14
ac16755_