数据消息中间件介绍DMQ.doc

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据消息中间件介绍DMQ

数据消息中间件介绍 DMQ CUC SRD1-UAP-PSO 修订文档历史记录 日期 版本 说明 作者 2012-10-24 V0.1 创建 吴学良 2012-11-01 V0.2 吴学良 2012-11-15 V0.3 增加3.3到3.6内容 吴学良 背景 目前几个流行的消息中间件产品分析: Apache的ActiveMq我们的几个产品都在使用,存在几个方面问题:使用复杂、维护不方便,容易出故障等, 比如, 需要熟悉JMX规范,了解各种接口定义; 产品提供的web监控页面不直观,需要做深入了解后,才明白。 监控mq内部运行情况,需要根据提供的接口进行代码开发; IBM的MQ不仅收费,而且使用更复杂,bug多,且不稳定。服务开通系统以前使用过,后来放弃使用。 微软MSMQ,从网络上大众使用的反馈也不好,不稳定。 所以计划自己开发一个简单的队列处理器,简称:DMQ。 目标 希望解决: 提供稳定的消息中间件; 使用简单,部署、配置很容易; 更方便维护,通过简单的sql语句即可查询、操作队列数据,以及页面展示等; 可以根据业务优先级定义,分配不同的队列,并按优先级获取队列数据; 为今后消息中间件使用提供产品复用 功能实现 结合BSS等业务系统具体情况:有数据库、使用人员都熟悉数据库等,因此,创建队列数据到自己的数据库中。方便队列数据的查询、监控以及队列数据维护。 目前MQ使用情况 BSS-OCS接口平台 UIP平台 设计目标 目标:一个jar,一个tns,一个sql,即可提供一个MQ 1、使用tns数据库配置; 2、可以定义获取队列数据规则: a.队列优先等级。根据业务优先级划分队列,比如:挂失、调账、业务订购等划分不同优先级的队列; b.入队时间优先级 3、可以定义队列消息生存时间; 4、消亡后的队列消息处理方式:删除、放入历史表; 5、取队列数据接口返回值类型: a.对象,一个队列记录对应的java对象 b.应用流水号 c.消息消息内容 业务流程 其中“反向回执”根据具体应用场景确定是否存在。 生产者模块 外围通过调用组件给出的接口对所需要同步的消息进行优先级处理,并保存至数据库供消费模块消费。 外围系统接入时,通过接口告知DMQ启动加载配置文件至内存。 外围系统请求业务操作,生产者模块根据配置的消息优先级将消息入库。 外围系统调用接口轮询,生产者模块根据配置策略返回消息回执。 消费者模块 生产者模块根据业务配置的优先级策略,把请求消息写入到消息队列后,消费者模块主要做一下操作: 消费者模块到消息队列表里,根据消息队列表里的应用类型,消息队列状态(见队列表)等读取消息队列表的请求消息,并修改消息状态; 根据业务并发标识来逻辑判断同一个号码同时做不同的业务操作,业务优先级的高低,然后消费者模块根据业务队列的优先级和配置的对应权重比处理不同请求消息,并回执应答给消息队列; 根据应用类型的单向和双向传递标识,如果消费者模块需要写入回执应答消息,则把反调响应消息写入消息队列,并修改消息状态。 消费者模块还需要考虑到,一次读取消息队列里最大接收数,读取不到消息,采用什么时间机制继续读取,消费者如果应答超时,应重新读取消息,以保证消息的正常和正确处理,在接收和发送消息处理中,记录相关情况,并记入日志。 优先级策略设计 大致顺序是:消息放入队列-(根据业务的优先级配置队列(按照优先级的处理高低,配置分发策略的权重比,保证优先级高的队列,得到权重相对大的业务消息分配, 比如,缴费,开户,查询三个业务,优先级是由高到低,设置的权重比是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

文档评论(0)

zhanghc + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档