《数据消息中间件介绍 DMQ.docx》由会员分享,可在线阅读,更多相关《数据消息中间件介绍 DMQ.docx(15页珍藏版)》请在三一办公上搜索。
1、Asiainfo-Linkage, Inc.,数据消息中间件介wDMQCUC SRD1-UAP-PSOAAsialnfo Linkage 亚信朕创AAsialnfo Linkage 亚信联创修订文档历史记录日期版本说明作者2012-10-24V0. 1创建吴学良2012-11-01V0.2吴学良2012-11-15V0.3增加3. 3到3. 6内容吴学良AAsialnfo Linkage 亚信联创1背景目前凡个流行的消息中间件产品分析: Apache的ActiveMq我们的几个产品都在使用,存在儿个方面问题:使 用复杂、维护不方便,容易出故障等,比如,需要熟悉JMX规范,了解各种接口定义; 产
2、品提供的web监控页面不直观,需要做深入了解后,才明白。 监控mq内部运行情况,需要根据提供的接口进行代码开发; IBM的MQ不仅收费,而且使用更复杂,bug多,且不稳定。服务开通 系统以前使用过,后来放弃使用。 微软MSMQ,从网络上大众使用的反馈也不好,不稳定。所以计划自己开发一个简单的队列处理器,简称:DMQo2目标希望解决:1. 提供稳定的消息中间件;2. 使用简单,部署、配置很容易;3. 更方便维护,通过简单的sql语句即可查询、操作队列数据,以及页面展示 等;4. 可认根据业务优先级定义,分配不同的队列,并按优先级获取队列数据;5. 为今后消息中间件使用提供产品复用3功能实现结合B
3、SS等业务系统具体情况:有数据库、使用人员都熟悉数据库等,因 此,创建队列数据到自己的数据库中。方便队列数据的查询、监控以及队列数 据维护。AAsialnfo Linkage 亚信联创3.1目前MQ使用情况3.1.1 BSS.OCS接口平台取同步表Ti_bh_synchinfo3.1.2 UIP 平台AAsialnfo Linkage 亚信朕创3.2设计目标目标:一个jar, 一个tns, 一个sql,即可提供一个MQ1、使用tns数据库配置;2、可以定义获取队列数据规则:a. 队列优先等级。根据业务优先级划分队列,比如:挂失、调账、业务订购 等划分不同优先级的队列;b. 入队时间优先级3、可
4、以定义队列消息生存时间;4、消亡后的队列消息处理方式:删除、放入历史表;5、取队列数据接口返回值类型:a. 对象,一个队列记录对应的java对象b. 应用流水号c. 消息消息内容3.3业务流程AAsialnfo Linkage 亚信联创其中“反向回执”根据具体应用场景确定是否存在。3.3.1生产者模块外围通过调用组件给出的接口对所需要同步的消息进行优先级处理,并保 存至数据库供消费模块消费。 外围系统接入时,通过接口告知DMQ启动加载配置文件至内存。外围系统请求业务操作,生产者模块根据配置的消息优先级将消息入 库。外围系统调用接口轮询,生产者模块根据配置策略返回消息回执。3.3.2消费者模块生
5、产者模块根据业务配置的优先级策略,把请求消息写入到消息队列后, 消费者模块主要做一下操作:消费者模块到消息队列表里,根据消息队列表里的应用类型,消息队列状 态(见队列表)等读取消息队列表的请求消息,并修改消息状态;根据业务并发标识来逻辑判断同一个号码同时做不同的业务操作,业务优 先级的高低,然后消费者模块根据业务队列的优先级和配置的对应权重比 处理不同请求消息,并回执应答给消息队列;AAsialnfo Linkage 亚信朕创根据应用类型的单向和双向传递标识,如果消费者模块需要写入回执应答 消息,则把反调响应消息写入消息队列,并修改消息状态。消费者模块还需要考虑到,一次读取消息队列里最大接收数
6、,读取不到消 息,采用什么时间机制继续读取,消费者如果应答超时,应重新读取消息, 以保证消息的正常和正确处理,在接收和发送消息处理中,记录相关情况, 并记入日志。3.4优先级策略设计大致顺序是:消息放入队列-今根据业务的优先级配置队列今按照优先级的 处理高低,配置分发策略的权重比,保证优先级高的队列,得到权重相对大的 业务消息分配,比如,缴费,开户,查询三个业务,优先级是由高到低,设置的权重比是 321,当多个请求消息进来,保证优先级高的缴费和依次的开户,查询可以在某 一个时间内比如1分钟按照这个权重比分配来处理。需要建立分发策略配置表或在配置文件里进行队列和权重比的配置,具体 的配置表结构为
7、:(仅作参考)create table TD_M_QUEUE_DISTRIBUTE 分发策略配置表(CHANNELTYPEVARCHAR2(30) not null,BUSINESSTYPEVARCHAR2(30) not null,DISTRIBUTEQUEUE VARCHAR2(30) not null,LOADFACTORVARCHAR2(30) not null,TRANSMITQUEUE VARCHAR2(30) not null,VALUE 1VARCHAR2(20),VALUE2VARCHAR2(30),VALUE3VARCHAR2(50);具体参数可以参考短信平台的表配置内容。
8、3.5数据模型设计3.5.1队列信息表应用标识(1-10个字符)应用类型(0-数据流单向传递,1-数据流双向传递)内部流水号队列名队列优先级消息有效时间(毫秒)(0-一直有效,否则具体数值)机密 Asiainfb-Lnikage, Lie., 第 7 页共 13 页2012消息消亡方式(1-直接删除,2-移到备份表)业务流水号(如:业务办理流水)业务并发标识(如:号码)消息状态(0-接入写入消息,1-接出取走消息,2-接出回写回执(反向传递),3-接入取回执(反向传递),4-接入处理完回执,见业务流程时序图)插入时间(tunestamp类型)更新时间(tunestamp类型)请求消息内容(可以
9、为空)返回消息内容(可以为空,反向传递)预留3.5.2触发器设计用于自动维护己消亡的消息3.5.3序列设计用于标识DMQ内部消息唯一性3.6配置项设计1进程启动后,文件配置加载到内存。配置内容如下:configDmq.xml 2n 3 I 4 申 APPSSB APPNA(E8910111213 E14 I15 E16 1?IS 19 - 20E21222324 -25 E26 2?OCS. KF用歹ij表(募个系绕使用了本套dma,应用间用晅号分隔)k: ParamDesc OCSTAGocs应用标识(1-10个字符)TYPEO应用类型(0-数据流单向传递,1-敏据流双向传ParamName
10、OVERT IME300000AAsialnfo Linkage 亚信朕创3-6J应用列表ConfigitemAPPSConf igParam)APPNAMEx/ParamName/OCS, KF,应用列表(哪几个系统使月了本套dmq,应用间用逗号分5)3.6.2应用标识TAG13($) 叮 15 E1617IS19 -20E21222324 -25 E26272829 -30 E31323334 -35 36373839 -IQ20 一却4JD 5A 一 .一.60.OCSTAGocsParamDesc应用标识(1-10个字苻)TYPEO应用类型(0-数总流单向传递,1-数据流双向Confi
11、gParaa/ OVERT IME 300000消息宥效时间(*秒)宜有效否则具住数值)PROCESSl息消亡方式(l宜接起除,2-移到备份表)ConfigParan)Ql,EUESocs_Ql, ocs_q2. ocs_qS分配由队列列表,甬逗号分隔SO1QQ3.6.3应用类型TYPE3.6.4消息有效时间OVERTIME3.6.5消息消亡方式PROCESS3.6.6分配的队列列表QUEUESQUEUESocs_qL ocs_q2, oc s_q3分配的队列列表,用逗号分隔3.6.6.1本队列对应的业务类型列表TRADETYPEocs_qlTRADETYPE10, 19K. ParamVal
12、ue本队列对应的业务类型列表,逗号分隔Par amN ameP R 二 OR 3xParamDesc)本队列优先级 DEPTH3000队列深度,超过此阀值不允许再插入(0-不限制,n) AAsialnfo Linkage 亚僖朕创3.6.6.2本队列优先级PRIOR3.6.6.3队列深度DEPTH3.6.7数据库配置信息DBLIST1=GJB -曰 -曰 -曰 B- 234567S9O 1234567 s 9 012345678 u 1J 14 TJ 1J TJ MJ 1 1 J 1 1 1 1 1 1J 1 1J TJDBLISTcrml, crm2dmQ部署的数据库连:接标识,逗:号分隔
13、,.f CC T、3.6.7.1数据库连接标识dbnamecrnil, dbnanb CRfl据库连接标识urljdbc:oracle:thin:S(DESCRIPTI0N=(ADDRESS_LIST=(LOAD_BALANCE=off)(FAILOVER=on)(ADDRESS=(fA据库连接池址useruop_ci-Eil 用户 passwordyysyd34_ Par smDe sc密码 inax 1 i mi t 10ParamDesc-;最大连接ParamD&scAAsialnfo Linkage 亚信联创3E7.2数据库连接地址url3.6.7.3用户名称user3.6.7.4用户
14、密码 password3E7.5 最大连接 maxlimit3.7接口设计fetchMsg接口返回值类型包含: 对象,一个队列记录对应的java对象应用流水号消息内容消息序列号3.7.1接入端mseftMsgFoiLi fetchMsgFoiIn finisliMsgForhi3.7.2接出端fetchMsgFoiOutfinisliMsgFoiOut3.7.3具体应用举例3.7.3.1正向调用如:OCS应用使用上述接口逻辑顺序是:AAsialnfo Linkage 亚信联创uiseitMsgFoiLi- fetcliMsgF01 OutfinisliMsgFoiOut3.7.3.2正向+反向调用如:uip应用使用上述接口逻辑顺序是:uiseitMsgFoiLi- fetcliMsgF01 OutfinisliMsgFoiOutfetchMsgFoiln fiiushMsgFoiIii3.7.3.3其它类型调用?你想到了吗?接口入参待补充4部署说明5性能要求