[发明专利]一种持久化消息的发布方法及系统有效
申请号: | 201210162372.5 | 申请日: | 2012-05-23 |
公开(公告)号: | CN103428072B | 公开(公告)日: | 2017-03-08 |
发明(设计)人: | 乐以长;封素石;张云 | 申请(专利权)人: | 北京大学;北大方正集团有限公司;方正国际软件(北京)有限公司 |
主分类号: | H04L12/58 | 分类号: | H04L12/58 |
代理公司: | 北京天悦专利代理事务所(普通合伙)11311 | 代理人: | 田明,任晓航 |
地址: | 100871*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 持久 消息 发布 方法 系统 | ||
技术领域
本发明涉及数据通讯领域,具体涉及一种持久化消息的发布方法及系统。
背景技术
在数据交换中心的消息中间件工作机制中,通常有一台数据交换服务器连接多台数据交换客户端,多台数据交换客户端之间通过数据交换服务器进行消息传输和数据交换。这种机制消息发送端和消息接收端通过数据交换服务器实现解耦,消息发送者和消息接收者不用同时在线也可进行消息传输。
数据交换服务器在收到消息发送端的实时消息时,将实时消息存入接收端对应的消息队列中,再将消息转发给消息接收端。为了保证消息传输的可靠性,数据交换服务器会将消息保存在非易失性存储设备,在出现掉电、系统异常崩溃等突发情况时,数据交换服务器重新启动能够加载持久化到非易失性存储设备的消息,将其转发给相应的消息接收端。将消息从非易失性存储设备读入内存然后存入消息队列的过程,称为持久化消息发布。
数据交换服务器普遍支持多路复用技术,所谓多路复用是指发送端在群发消息(将消息发给多个接收端或广播发送)时,只向数据交换服务器发送一条消息,由数据交换服务器根据消息路由结果分别将消息转发给多个消息接收端,这种方式减少了发送端向数据交换服务器发送的消息量,节约网络带宽,提高群发的效率。如图1所示,发送端发送一条群发消息,只需向数据交换服务器发送一条消息,服务器再将该消息转发给多个接收端(图1所示为三个接收端)。多路复用技术使得数据交换服务器需要向消息接收端转发的消息数量远远大于从消息发送端接收的消息数量,其结果是消息转发的速度明显比消息接收的速度慢很多。消息队列中的消息得不到及时转发,最终导致消息队列被占满,部分消息只在非易失性存储设备中保存,未被存入消息队列中。在消息队列中的消息被转发之后,会释放其占用的存储空间,这时需要重新将持久化的消息读入内存,然后将其发布到消息队列中进行转发。
在持久化消息发布的过程中,通常数据交换服务器的消息接收装置还在工作,还在接收消息发送端发送的消息,期间还会出现队列忙的情况。图2为现有技术发布持久化消息的工作原理示意图,现有技术中,在持久化消息发布过程中如果出现消息队列为忙的情况,通常必须睡眠等待一段指定的时间,睡眠超时后再去获取消息队列的状态;如果队列为忙就继续睡眠等待,超时后再获取消息队列状态,如此反复,直到消息队列为空闲然后继续发布,如步骤201-208所示。如图2步骤204所示,睡眠等待机制必须等到超时才能去查询消息队列状态,如果睡眠时间设定为60秒,必须等待60秒超时才去查询消息队列的状态。这种通过反复获取消息队列是否为空闲然后发布的方法存在如下问题:即使消息队列已经空闲也需本次等待超时才去获取消息队列的空闲状态,才能启动消息发布程序,如睡眠超时时间设为60秒,在等待了5秒后消息队列中的消息被取走,也需再等55秒才去查询消息队列的状态,这就不能最大化的提高消息转发的实时性。虽然可以通过缩短等待时间,增加查询的频率尽量提高消息转发的实时性,但是等待时间过短,如果消息队列长时间处于忙状态,频繁查询消息队列的状态并无意义,反而会影响性能。因此,现有技术如果存在大量消息发送(包括实时消息和持久化消息)时,发布持久化消息效率低,消息转发实时性差。
发明内容
针对现有技术中所存在的问题,为了解决现有技术在发布大量持久化消息时周期性等待查询消息队列的状态而引起的效率低,消息转发实时性差的问题,本发明的目的是提供一种持久化消息的发布方法及系统,该方法及系统在持久化消息发布过程中引入了等待、通知机制,通过事件触发持久化消息发布过程,保证数据交换服务器在大量接收、转发消息的情况下,保证消息高效、可靠的传输,同时也提高了持久化消息传送的实时性。
一种持久化消息的发布方法,包括以下步骤:
(1)消息接收装置接收消息发送端发送到数据交换服务器的实时消息,并将所述实时消息持久化到非易失性存储设备;
(2)持久化消息读取装置读取持久化到非易失性存储设备上的持久化消息;
(3)持久化消息发布装置将所述持久化消息存入消息队列中;在将持久化消息存入消息队列之前,判断消息队列是否为忙,如果消息队列为忙,持久化消息发布装置将会暂停运行并进入等待状态,等待消息队列发送的空闲通知;
(4)消息转发单元提取消息队列中的消息后,将消息转发给消息接收端,消息队列将向持久化消息发布装置发送通知事件,通知所述持久化消息发布装置终止等待;
(5)持久化消息发布装置从等待语句的下一条语句继续执行,继续往消息队列发布消息。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京大学;北大方正集团有限公司;方正国际软件(北京)有限公司,未经北京大学;北大方正集团有限公司;方正国际软件(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210162372.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:闪存单元及其形成方法
- 下一篇:基于粗糙集理论的配电网故障风险评估方法