码迷,mamicode.com
首页 > 其他好文 > 详细

ESLQ基础知识实践——实践一

时间:2015-06-26 13:04:58      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:mb   mq   esql   

1.声明变量,设置变量值(解析XML格式消息,IBM推荐使用XMLNSC,而不推荐使用XML,如果对传入的消息不知道是何种格式,则要用BLOB进行解析,最大限度进行容错处理)。

DECLARE JMS_DATE CHAR;

SET JMS_DATE=CURRENT_TIMESTAMP;

SET OutputRoot.XMLNSC.(XMLNSC.XmlDeclaration)*.(XMLNSC.Attribute)Version  =  DATASPEC_TIPS_VER;

2.引用其他包下的函数(注:其他包里面的变量,即使声明为shared,也无法被其他esql引用(即咨询过IBM专家,但是试验后不可以),如果想引用,可以定义成函数,把相应的变量作为返回值,传递到相应的esql文件中,即可达到引用的目的)

SET OutputRoot.XMLNSC.(XMLNSC.XmlDeclaration)*.(XMLNSC.Attribute)Encoding   =  TIPS_XML_ENCODING();

ESQL文件首部必须使用PATH关键字来指出引用的文件:

path esql.common,esql.action.ctais.g1;(如esql.common中common为一个文件夹,则引用其下面的所有esql文件)

3.引用传入消息流中参数变量

DECLARE ENVIROMENTXMLT msg  REFERENCE TO Enviroment.Variables.XMLTmsg.XMLNSC; --技术体信息

DECLARE ENVIROMENTXMLDmsg  REFERENCE TO Enviroment.Variables.XMLDmsg.XMLNSC; --业务体信息

4.删除环境变量中的某一节点的解析节点

DELETE FIELD Enviroment.Variables.XMLTmsg;

DELETE FIELD Enviroment.Variables.XMLDmsg;

5.消息流中,同时指定多个目的队列的方式(看似同时指定并发送,但是其运行时串行的,而且无法确定其顺序,但是可保证其全部发送)

方法一:

SET OutputLocalEnviroment.Destination.MQDestinationList.DestinationDate[1].queueName  =  指定队列名1;

SET OutputLocalEnviroment.Destination.MQDestinationList.DestinationDate[2].queueName  =  指定队列名2;

SET OutputLocalEnviroment.Destination.MQDestinationList.DestinationDate[3].queueName  =  指定队列名3;

(注:一定要把返回值设置为true,否则可能只发送第一个之后,后续无法指定并发送消息)

方法二:

IF EXISTS(OutputRoot.XMLNSC.MSG.MsgHeader[]) THEN --------进行逻辑判断

PROPAGATE TO TERMINAL ‘out1‘;

PROPAGATE TO TERMINAL ‘out2‘;

ELSE

PROPAGATE TO TERMINAL ‘out3‘;

PROPAGATE TO TERMINAL ‘out4‘;

RETURN FALSE;

(注:一定要把返回值设置为FALSE,否则可能只发送第一个之后,后续无法指定并发送消息)



ESLQ基础知识实践——实践一

标签:mb   mq   esql   

原文地址:http://blog.csdn.net/dymkkj/article/details/46646523

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!