
TLQ8产品培训开发环境ppt课件.ppt
32页TongLINK/Q8.0 开发环境开发环境演演 讲讲 人:人:演讲时间:演讲时间:目录目录API介绍及应用程序开发介绍及应用程序开发应用举例应用举例练习练习API介绍及应用程序开发介绍及应用程序开发API介绍及应用程序开发介绍及应用程序开发普通普通API介绍介绍APIAPI与核心的交互机制与核心的交互机制TLQ核心处理应用接口函数1432普通普通API介绍介绍主要结构及作用主要结构及作用连接标识:连接标识: TLQ_IDTLQ_ID应用实例标识:应用实例标识:TLQ_QCUHDLTLQ_QCUHDL消息描述:消息描述: TLQMSG_INFOTLQMSG_INFO消息操作选项:消息操作选项:TLQMSG_OPTTLQMSG_OPT消息错误信息:消息错误信息:TLQErrorTLQError 重要字符串重要字符串消息内容:消息内容:msgcontentmsgcontent用户属性:用户属性:UserPropertyUserProperty普通普通API介绍介绍消息由三部分组成:消息由三部分组成:消息描述(必需)+用户自定义属性(可选)+消息内容(必需)消息描述(必需)+用户自定义属性(可选)+消息内容(必需)消息描述TLQMSG_INFO 用户自定义属性UserProperty消息内容msgcontent普通普通API介绍介绍tlq_api.htlq_api.hTLQMSG_INFOTLQMSG_INFO结构:结构:struct msg_info{struct msg_info{charcharVerNo;VerNo;/* /* 版本号版本号 * */ / char char MsgType;MsgType;/* /* 消息类型消息类型* */ / charcharUsrContext[USR_CONTEXT_LEN+1]; UsrContext[USR_CONTEXT_LEN+1]; /* /* 消息的用户数据消息的用户数据 * */ /intintMsgSize;MsgSize;/* /* 消息长度消息长度 * */ /intintExpiry;Expiry;/* /* 生命周期生命周期 * */ /charcharPriority;Priority;/* /* 优先级,优先级,0..9 */0..9 */charcharPersistence;Persistence;/* /* 持久性类型持久性类型 * */ /charcharMsgOperateType;MsgOperateType;/* /* 消息控制类型消息控制类型 ,压缩或安全出口,压缩或安全出口* */ /charcharMsgOperateInfo[OPERATEDATALEN +1]; MsgOperateInfo[OPERATEDATALEN +1]; /* /* 消息控制数据消息控制数据 * */ /unsigned intunsigned intUserPropertyLen;UserPropertyLen;/* /* 用户自定义属性串的长度用户自定义属性串的长度 * */ /unsigned intunsigned intUserPropertyNum;UserPropertyNum;/*/*用户自定义属性的个数用户自定义属性的个数 * */ /charcharCorrMsgId[MSGIDLEN+1]; CorrMsgId[MSGIDLEN+1]; /* /* 消息的关联属性消息的关联属性* */ /普通普通API介绍介绍以下属性在消息发送时由核心赋值,应用时不必关心以下属性在消息发送时由核心赋值,应用时不必关心, ,* *发送成功返回后,可获取这些属性的值发送成功返回后,可获取这些属性的值charcharSrcNode[NAMELEN+1];SrcNode[NAMELEN+1];/* /* 消息的源节点消息的源节点* */ /charcharDestQName[NAMELEN+1]; DestQName[NAMELEN+1]; /* /* 目标队列名目标队列名* */ /intintPutDateTime; PutDateTime; /* /* 消息发送时间消息发送时间* */ /charcharGroupID[MSGIDLEN+1]; GroupID[MSGIDLEN+1]; /* /* 组标识组标识* */ /intintGroupSeq; GroupSeq; /* /* 组序号组序号* */ /charcharGroupStatus; GroupStatus; /* /* 组消息的状态组消息的状态* */ / charcharMsgOrigin;MsgOrigin; /* /* 消息的来源消息的来源* */ / charcharMsgId[MSGIDLEN+1];MsgId[MSGIDLEN+1];/* /* 消息标识消息标识 * */ /unsigned intunsigned intOrgMsgLen;OrgMsgLen;/* /* 消息处理前的长度消息处理前的长度 * */ /charchar[LONG_INT_MAXLEN]; [LONG_INT_MAXLEN]; /* /* 文件大小文件大小* */ /intintEvTime; EvTime; /* /* 事件产生的时间事件产生的时间* */ /unsigned intunsigned intEvStyle;EvStyle;/* /* 事件类型事件类型* */ /intintRollbackCount; RollbackCount; /*/*消息回滚次数消息回滚次数* */ /charcharReserve[16];Reserve[16];/* /* 以备后用以备后用 * */ /shortshortOffSet; OffSet; /* /* 偏移量偏移量* */ /} }普通普通API介绍介绍以下属性在消息发送时由核心赋值,应用时不必关心以下属性在消息发送时由核心赋值,应用时不必关心, ,* *发送成功返回后,可获取这些属性的值发送成功返回后,可获取这些属性的值charcharSrcNode[NAMELEN+1];SrcNode[NAMELEN+1];/* /* 消息的源节点消息的源节点* */ /charcharDestQName[NAMELEN+1]; DestQName[NAMELEN+1]; /* /* 目标队列名目标队列名* */ /intintPutDateTime; PutDateTime; /* /* 消息发送时间消息发送时间* */ /charcharGroupID[MSGIDLEN+1]; GroupID[MSGIDLEN+1]; /* /* 组标识组标识* */ /intintGroupSeq; GroupSeq; /* /* 组序号组序号* */ /charcharGroupStatus; GroupStatus; /* /* 组消息的状态组消息的状态* */ / charcharMsgOrigin;MsgOrigin; /* /* 消息的来源消息的来源* */ / charcharMsgId[MSGIDLEN+1];MsgId[MSGIDLEN+1];/* /* 消息标识消息标识 * */ /unsigned intunsigned intOrgMsgLen;OrgMsgLen;/* /* 消息处理前的长度消息处理前的长度 * */ /charchar[LONG_INT_MAXLEN]; [LONG_INT_MAXLEN]; /* /* 文件大小文件大小* */ /intintEvTime; EvTime; /* /* 事件产生的时间事件产生的时间* */ /unsigned intunsigned intEvStyle;EvStyle;/* /* 事件类型事件类型* */ /intintRollbackCount; RollbackCount; /*/*消息回滚次数消息回滚次数* */ /charcharReserve[16];Reserve[16];/* /* 以备后用以备后用 * */ /shortshortOffSet; OffSet; /* /* 偏移量偏移量* */ /} }普通普通API介绍介绍函数接口的作用:函数接口的作用: 实现应用与核心的交互实现应用与核心的交互 实现个性化应用的定制实现个性化应用的定制普通普通API介绍介绍接口分类接口分类普通API接口初始化连断系统资源打开关闭实例消息处理普通消息触发消息组消息事务消息事件消息应用连接静态管理动态管理管理类接口普通普通API介绍介绍连接断开系统资源连接断开系统资源1.1.连接系统资源连接系统资源int Tlq_Conn(TLQ_ID *gid,TLQError *err);int Tlq_Conn(TLQ_ID *gid,TLQError *err);2.2.断开系统资源断开系统资源int Tlq_DisConn(TLQ_ID *gid,TLQError *err);int Tlq_DisConn(TLQ_ID *gid,TLQError *err);说明:这两个函数成对出现说明:这两个函数成对出现普通普通API介绍介绍开始结束应用实例开始结束应用实例1.1.开始应用实例开始应用实例int Tlq_OpenQCU(TLQ_ID *gid,TLQ_QCUHDL *qcuHandle,int Tlq_OpenQCU(TLQ_ID *gid,TLQ_QCUHDL *qcuHandle,char *QCUName,TLQError *err);char *QCUName,TLQError *err);2.2.结束应用实例结束应用实例int Tlq_CloseQCU(TLQ_ID *gid,TLQ_QCUHDL *qcuHandle,int Tlq_CloseQCU(TLQ_ID *gid,TLQ_QCUHDL *qcuHandle,TLQError *err);TLQError *err);说明:这两个函数成对出现说明:这两个函数成对出现普通普通API介绍介绍初始化函数初始化函数1.1.初始化初始化TLQMSG_INFOTLQMSG_INFOint Tlq_InitMsgInfo (TLQMSG_INFO *pUsrMsg);int Tlq_InitMsgInfo (TLQMSG_INFO *pUsrMsg);2.2.初始化初始化TLQMSG_OPTTLQMSG_OPT int Tlq_InitMsgOpt(TLQMSG_OPT *msgopt);int Tlq_InitMsgOpt(TLQMSG_OPT *msgopt);普通普通API介绍介绍发送消息,包括普通消息、组消息、订阅事件消息、发布订阅、取消发布订阅等发送消息,包括普通消息、组消息、订阅事件消息、发布订阅、取消发布订阅等int Tlq_PutMsg(TLQ_ID *gid,TLQ_QCUHDL *qcuHandle,TLQMSG_INFO *pUsrMsg,TLQMSG_OPT int Tlq_PutMsg(TLQ_ID *gid,TLQ_QCUHDL *qcuHandle,TLQMSG_INFO *pUsrMsg,TLQMSG_OPT *msgopt,char *UsrProperty, char *msgcontent,TLQError *err)*msgopt,char *UsrProperty, char *msgcontent,TLQError *err);;msgoptmsgopt .OperateType .OperateType 为不同的值,表示的不同操作为不同的值,表示的不同操作TLQOT_PUTTLQOT_PUT 发送消息发送消息TLQOT_PUBTLQOT_PUB发布消息发布消息TLQOT_DELPUBTLQOT_DELPUB 取消发布取消发布TLQOT_SUBTLQOT_SUB 订阅消息订阅消息TLQOT_DELSUBTLQOT_DELSUB 取消订阅取消订阅普通普通API介绍介绍int Tlq_GetMsg(TLQ_ID *gid,TLQ_QCUHDL *qcuHandle,TLQMSG_INFO *pUsrMsg,TLQMSG_OPT int Tlq_GetMsg(TLQ_ID *gid,TLQ_QCUHDL *qcuHandle,TLQMSG_INFO *pUsrMsg,TLQMSG_OPT *msgopt,char **msgcontent,TLQError *err);*msgopt,char **msgcontent,TLQError *err);msgopt .OperateTypemsgopt .OperateType==TLQOT_GET TLQOT_GET 时,表示接收消息时,表示接收消息msgopt .OperateTypemsgopt .OperateType==TLQOT_BROWSE TLQOT_BROWSE 时,表示浏览消息时,表示浏览消息接收消息和浏览消息接收消息和浏览消息普通普通API介绍介绍 int Tlq_DeleteMsg(TLQ_ID *gid,TLQ_QCUHDL *qcuHandle, TLQMSG_INFO *pUsrMsg,TLQMSG_OPT int Tlq_DeleteMsg(TLQ_ID *gid,TLQ_QCUHDL *qcuHandle, TLQMSG_INFO *pUsrMsg,TLQMSG_OPT *msgopt,int *msg_num,TLQError *err);*msgopt,int *msg_num,TLQError *err);msgopt .DelStatemsgopt .DelState值标识删除不同状态的消息值标识删除不同状态的消息 TLQSTATE_ALLTLQSTATE_ALL 删除所有状态的消息删除所有状态的消息TLQSTATE_READYTLQSTATE_READY 删除没有发送或接收完毕的消息删除没有发送或接收完毕的消息TLQSTATE_SENDINGTLQSTATE_SENDING 删除正在发送的消息删除正在发送的消息TLQSTATE_RECEIVING TLQSTATE_RECEIVING 删除正在接收的消息删除正在接收的消息 删除消息删除消息普通普通API介绍介绍 int Tlq_AckMsg(TLQ_ID *gid,TLQ_QCUHDL *qcuHandle,TLQMSG_INFO *pUsrMsg ,TLQMSG_OPT int Tlq_AckMsg(TLQ_ID *gid,TLQ_QCUHDL *qcuHandle,TLQMSG_INFO *pUsrMsg ,TLQMSG_OPT *msgopt,int AckType,TLQError *err);*msgopt,int AckType,TLQError *err);msgopt . AckModemsgopt . AckMode值标识删除不同状态的消息值标识删除不同状态的消息 TLQACK_AUTO TLQACK_AUTO 自动确认模式自动确认模式,消息接收后即被删除,消息接收后即被删除TLQACK_USER TLQACK_USER 用户确认模式用户确认模式,消息接收后并不删除,必须等待,消息接收后并不删除,必须等待用户确认模式下用户确认模式下,,AckTypeAckType分别取值如下:分别取值如下:TLQACK_COMMITTLQACK_COMMIT提交确认提交确认TLQACK_ROLLBACKTLQACK_ROLLBACK回滚确认回滚确认 消息接收确认消息接收确认普通普通API介绍介绍1.1.组消息开始的标志组消息开始的标志 int Tlq_BeginGroup (TLQ_ID *gid,TLQ_QCUHDL *qcuHandle,TLQError *err);int Tlq_BeginGroup (TLQ_ID *gid,TLQ_QCUHDL *qcuHandle,TLQError *err);2.2.提交组消息提交组消息 int Tlq_CommitGroup (TLQ_ID *gid,TLQ_QCUHDL *qcuHandle,TLQError *err);int Tlq_CommitGroup (TLQ_ID *gid,TLQ_QCUHDL *qcuHandle,TLQError *err);3.3.回滚组消息回滚组消息 int Tlq_RollbackGroup (TLQ_ID *gid,TLQ_QCUHDL *qcuHandle,TLQError *err);int Tlq_RollbackGroup (TLQ_ID *gid,TLQ_QCUHDL *qcuHandle,TLQError *err);说明:说明:2 2、、3 3必须与必须与1 1配对使用配对使用组消息接口组消息接口普通普通API介绍介绍1.1.事务开始标志事务开始标志 int Tlq_Begin(TLQ_ID *gid,TLQ_QCUHDL *qcuHandle,TLQError *err);int Tlq_Begin(TLQ_ID *gid,TLQ_QCUHDL *qcuHandle,TLQError *err);2.2.事务提交标志事务提交标志 int Tlq_Commit(TLQ_ID *gid,TLQ_QCUHDL *qcuHandle,TLQError *err);int Tlq_Commit(TLQ_ID *gid,TLQ_QCUHDL *qcuHandle,TLQError *err);3.3.事务失败后用于回滚事务事务失败后用于回滚事务 int Tlq_Rollback(TLQ_ID *gid,TLQ_QCUHDL *qcuHandle,TLQError *err);int Tlq_Rollback(TLQ_ID *gid,TLQ_QCUHDL *qcuHandle,TLQError *err);说明:说明:2 2、、3 3必须与必须与1 1配对使用配对使用事务接口事务接口普通普通API介绍介绍 main() { Tlq_Conn(&gid,&errstru);////连接系统资源连接系统资源Tlq_OpenQCU(&gid,&qcuId1,QcuName1,&errstru); ////开始应用实例开始应用实例Tlq_Begin(); ////消息处理,如发送消息,接收消息等操作消息处理,如发送消息,接收消息等操作Tlq_Commit()/Tlq_Rollback();Tlq_CloseQCU(&gid,&qcuId1,&errstru); ////结束应用实例结束应用实例Tlq_DisConn(&gid,&errstru);////断开系统资源断开系统资源}说明:这是应用实例运行的基本框架,是必需的应用模式应用模式瘦客户瘦客户瘦客户开发瘦客户开发瘦客户瘦客户API接口函数应用连接消息操作初始化获取连接工厂创建集群连接实例消费者释放连接 释放资源生产者瘦客户瘦客户1 1、获取连接工厂、获取连接工厂Tlq_ClusterLookup(TLQCLUSTER_FACTORY *list, //Tlq_ClusterLookup(TLQCLUSTER_FACTORY *list, // 集群连接列表集群连接列表int *num,int *num, // //集群连接数集群连接数char *jndiUrl,char *jndiUrl, //jndi //jndi服务器地址服务器地址char *ClusterQname, //char *ClusterQname, //集群队列名集群队列名TLQError *tlqerr); //TLQError *tlqerr); // 错误信息错误信息客户端专用函数说明客户端专用函数说明瘦客户瘦客户2 2、创建生产、消费者实例、创建生产、消费者实例Tlq_ClusterCreateInstance(TLQCLUSTER_HANDLE *ClusterId, //[IN/OUT]Tlq_ClusterCreateInstance(TLQCLUSTER_HANDLE *ClusterId, //[IN/OUT]实例句柄实例句柄 TLQCLUSTER_FACTORY TLQCLUSTER_FACTORY *list, //*list, //集群成员地址列表集群成员地址列表 int listnum, int listnum, ////集群成员个数集群成员个数 int ConnectionNum, // int ConnectionNum, //单个成员创建连接单个成员创建连接数数 int flag, // int flag, //实例类型,实例类型,0 0:发送,:发送,1 1:接收:接收 int sequence, // int sequence, //实例序号,同一进程中不同实例序号不能相同实例序号,同一进程中不同实例序号不能相同 TLQMSG_INFO TLQMSG_INFO *uMsg, //*uMsg, //用于接收消息的消息描述,发送实例忽略此参数用于接收消息的消息描述,发送实例忽略此参数 TLQMSG_OPT *msgopt,// TLQMSG_OPT *msgopt,//用于接收消息的操作选项,发送实例忽用于接收消息的操作选项,发送实例忽略此参数略此参数 int MaxSize, / int MaxSize, // /发送实例可发送消息的最大值,小于等于发送实例可发送消息的最大值,小于等于0 0时使用系统默认值时使用系统默认值 char char *library, //*library, //用于接收实例处理消息用的动态库全路径用于接收实例处理消息用的动态库全路径 OnException_t *ExHandle, OnException_t *ExHandle, ////自定义的回调函数自定义的回调函数 TLQError *tlqerr) // TLQError *tlqerr) // 错误错误信息信息瘦客户瘦客户3 3、生产者发送消息、生产者发送消息Tlq_ClusterProducer(TLQCLUSTER_HANDLE *ClusterId, //Tlq_ClusterProducer(TLQCLUSTER_HANDLE *ClusterId, // 实例句柄实例句柄TLQMSG_INFO *uMsg,TLQMSG_INFO *uMsg,////消息描述消息描述TLQMSG_OPT *msgopt,TLQMSG_OPT *msgopt,////消息操作消息操作char *msgcontent,char *msgcontent,////消息内容消息内容char *UserProperty,char *UserProperty,////自定义属性值自定义属性值int prolen,int prolen,////自定义属性长度自定义属性长度TLQError *tlqerr);TLQError *tlqerr);////错误信息错误信息应用通过生产者向集群队列发送消息。
应用通过生产者向集群队列发送消息瘦客户瘦客户5 5、关闭集群实例、关闭集群实例Tlq_ClusterCloseInstance(TLQCLUSTER_HANDLE *ClusterId);Tlq_ClusterCloseInstance(TLQCLUSTER_HANDLE *ClusterId);关闭集群实例,释放系统资源关闭集群实例,释放系统资源4 4、通知集群实例开始接收处理数据、通知集群实例开始接收处理数据Tlq_ClusterConsumer(TLQCLUSTER_HANDLE *ClusterId);Tlq_ClusterConsumer(TLQCLUSTER_HANDLE *ClusterId);练习练习练习一练习一 1.1.建立建立1 1个节点,通过两个个节点,通过两个QCUQCU配置一个集群队列配置一个集群队列2.2.发送一个生命周期为无限长的消息到集群中发送一个生命周期为无限长的消息到集群中3.3.从集群队列中接收消息从集群队列中接收消息 参考资料参考资料 TongLINKQ8.0系统开发手册系统开发手册_程序设计指南程序设计指南 TongLINKQ8.0系统开发手册系统开发手册_C编程参考编程参考 TongLINKQ8.0系统开发手册系统开发手册_JAVA编程参考编程参考 TongLINKQ8.0系统开发手册系统开发手册_JMS编程参考编程参考 TongLINKQ8.0系统开发手册系统开发手册_客户端集群编程参考客户端集群编程参考尾页此课件下载可自行编辑修改,供参考!感谢您的支持,我们努力做得更好!。












