已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Asiainfo-Linkage, Inc.,数据消息中间件介绍DMQCUC SRD1-UAP-PSO数据消息中间件介绍修订文档历史记录日期版本说明作者2012-10-24V0.1创建吴学良2012-11-01V0.2吴学良2012-11-15V0.3增加3.3到3.6内容吴学良1 背景目前几个流行的消息中间件产品分析:u Apache的ActiveMq我们的几个产品都在使用,存在几个方面问题:使用复杂、维护不方便,容易出故障等, 比如, 需要熟悉JMX规范,了解各种接口定义; 产品提供的web监控页面不直观,需要做深入了解后,才明白。 监控mq内部运行情况,需要根据提供的接口进行代码开发;u IBM的MQ不仅收费,而且使用更复杂,bug多,且不稳定。服务开通系统以前使用过,后来放弃使用。u 微软MSMQ,从网络上大众使用的反馈也不好,不稳定。所以计划自己开发一个简单的队列处理器,简称:DMQ。2 目标希望解决:1. 提供稳定的消息中间件;2. 使用简单,部署、配置很容易; 3. 更方便维护,通过简单的sql语句即可查询、操作队列数据,以及页面展示等;4. 可以根据业务优先级定义,分配不同的队列,并按优先级获取队列数据;5. 为今后消息中间件使用提供产品复用3 功能实现结合BSS等业务系统具体情况:有数据库、使用人员都熟悉数据库等,因此,创建队列数据到自己的数据库中。方便队列数据的查询、监控以及队列数据维护。3.1 目前MQ使用情况3.1.1 BSS-OCS接口平台3.1.2 UIP平台3.2 设计目标目标:一个jar,一个tns,一个sql,即可提供一个MQ1、使用tns数据库配置;2、可以定义获取队列数据规则:a.队列优先等级。根据业务优先级划分队列,比如:挂失、调账、业务订购等划分不同优先级的队列;b.入队时间优先级3、可以定义队列消息生存时间;4、消亡后的队列消息处理方式:删除、放入历史表;5、取队列数据接口返回值类型:a.对象,一个队列记录对应的java对象b.应用流水号c.消息消息内容3.3 业务流程其中“反向回执”根据具体应用场景确定是否存在。3.3.1 生产者模块外围通过调用组件给出的接口对所需要同步的消息进行优先级处理,并保存至数据库供消费模块消费。 外围系统接入时,通过接口告知DMQ启动加载配置文件至内存。 外围系统请求业务操作,生产者模块根据配置的消息优先级将消息入库。 外围系统调用接口轮询,生产者模块根据配置策略返回消息回执。3.3.2 消费者模块生产者模块根据业务配置的优先级策略,把请求消息写入到消息队列后,消费者模块主要做一下操作: 消费者模块到消息队列表里,根据消息队列表里的应用类型,消息队列状态(见队列表)等读取消息队列表的请求消息,并修改消息状态; 根据业务并发标识来逻辑判断同一个号码同时做不同的业务操作,业务优先级的高低,然后消费者模块根据业务队列的优先级和配置的对应权重比处理不同请求消息,并回执应答给消息队列; 根据应用类型的单向和双向传递标识,如果消费者模块需要写入回执应答消息,则把反调响应消息写入消息队列,并修改消息状态。 消费者模块还需要考虑到,一次读取消息队列里最大接收数,读取不到消息,采用什么时间机制继续读取,消费者如果应答超时,应重新读取消息,以保证消息的正常和正确处理,在接收和发送消息处理中,记录相关情况,并记入日志。3.4 优先级策略设计大致顺序是:消息放入队列-根据业务的优先级配置队列按照优先级的处理高低,配置分发策略的权重比,保证优先级高的队列,得到权重相对大的业务消息分配,比如,缴费,开户,查询三个业务,优先级是由高到低,设置的权重比是3:2:1,当多个请求消息进来,保证优先级高的缴费和依次的开户,查询可以在某一个时间内比如1分钟按照这个权重比分配来处理。需要建立分发策略配置表或在配置文件里进行队列和权重比的配置,具体的配置表结构为:(仅作参考)create table TD_M_QUEUE_DISTRIBUTE /分发策略配置表( CHANNELTYPE VARCHAR2(30) not null, BUSINESSTYPE VARCHAR2(30) not null, DISTRIBUTEQUEUE VARCHAR2(30) not null, LOADFACTOR VARCHAR2(30) not null, TRANSMITQUEUE VARCHAR2(30) not null, VALUE1 VARCHAR2(20), VALUE2 VARCHAR2(30), VALUE3 VARCHAR2(50);具体参数可以参考短信平台的表配置内容。3.5 数据模型设计3.5.1 队列信息表应用标识(1-10个字符)应用类型(0-数据流单向传递,1-数据流双向传递)内部流水号队列名队列优先级消息有效时间(毫秒)(0-一直有效,否则具体数值)消息消亡方式(1-直接删除,2-移到备份表)业务流水号(如:业务办理流水)业务并发标识(如:号码)消息状态(0-接入写入消息,1-接出取走消息,2-接出回写回执(反向传递),3-接入取回执(反向传递),4-接入处理完回执,见业务流程时序图)插入时间(timestamp类型)更新时间(timestamp类型)请求消息内容(可以为空)返回消息内容(可以为空,反向传递)预留3.5.2 触发器设计用于自动维护已消亡的消息3.5.3 序列设计用于标识DMQ内部消息唯一性3.6 配置项设计进程启动后,文件配置加载到内存。配置内容如下:3.6.1 应用列表3.6.2 应用标识TAG3.6.3 应用类型TYPE3.6.4 消息有效时间OVERTIME3.6.5 消息消亡方式PROCESS3.6.6 分配的队列列表QUEUES3.6.6.1 本队列对应的业务类型列表TRADETYPE3.6.6.2 本队列优先级PRIOR3.6.6.3 队列深度DEPTH3.6.7 数据库配置信息DBLIST3.6.7.1 数据库连接标识dbname3.6.7.2 数据库连接地址url3.6.7.3 用户名称user3.6.7.4 用户密码password3.6.7.5 最大连接maxlimit3.7 接口设计fetchMsg接口返回值类型包含: 对象,一个队列记录对应的java对象 应用流水号 消息内容消息序列号3.7.1 接入端insertMsgForInfetchMsgForInfinishMsgForIn3.7.2 接出端fetchMsgForOutfinishMsgForOut3.7.3 具体应用举例3.7.3.1 正向调用如:OCS应用使用上述接口逻辑顺序是:insertMsgForIn- fetchMsgForOut finishMsgForOut3.7.3.2 正向+反向调用如:UIP应用使用上述接口逻辑顺序是:insertMs
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机械秒表读数训练
- 出轨婚前财产协议书
- 三七合伙写合同范本
- 老婆打掉孩子协议书
- 儿子死后养老协议书
- 服装店团购合同范本
- 电信用户转让协议书
- 老婆破产离婚协议书
- 美发合资合同协议书
- 签了放弃产权协议书
- 超声诊疗技术操作规范大全
- 车行店铺转让合同范本
- 企业税务基础培训课件
- 湿热灭菌柜验证培训
- 2025年天津红日药业股份有限公司招聘笔试考试参考试题附答案解析
- 起运苗木施工方案
- 2025浙江宁波市北仑区交通投资集团有限公司招聘矿山专职技术人员6人笔试历年常考点试题专练附带答案详解试卷2套
- 寺院消防安全培训课件
- 2022北京首都师大附中高一12月月考数学(教师版)
- 35kV线路施工检修方案范本
- 北京某中学2026届高三年级上册开学考试 英语试题(含答案)
评论
0/150
提交评论