[发明专利]一种基于磁盘缓存的消息队列的实现方法及装置在审
申请号: | 201510547996.2 | 申请日: | 2015-08-31 |
公开(公告)号: | CN105138410A | 公开(公告)日: | 2015-12-09 |
发明(设计)人: | 贾高峰;田晋坤;虞平;万月亮;火一莽;曹晓飞 | 申请(专利权)人: | 北京锐安科技有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54;G06F3/06 |
代理公司: | 北京品源专利代理有限公司 11332 | 代理人: | 胡彬;孟金喆 |
地址: | 100044 北京市海淀区西小口*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 磁盘 缓存 消息 队列 实现 方法 装置 | ||
1.一种基于磁盘缓存的消息队列的实现方法,其特征在于,包括:
创建监控线程以按照预设的周期值周期性的监控消息队列中的消息量;
在所述消息量达到预设的消息上限值时,将再接收到的消息转换为二进制序列串,将所述二进制序列串顺序写入预先确定的磁盘文件,记录所述磁盘文件的写入的消息量和写入消息的偏移位置;
在所述消息量达到预设的消息下限值时,从所述预先确定的磁盘文件中顺序读取消息,将所述消息写入所述消息队列,记录读取的消息量和读取消息的偏移位置。
2.根据权利要求1所述的方法,其特征在于,在将所述二进制序列串顺序写入预先确定的磁盘文件之前,还包括:
获取预先设置的写磁盘文件索引,其中,所述写磁盘文件索引包括当前写磁盘文件名、当前写入的消息量和当前写入消息的位置对应的写指针;
根据所述写磁盘文件索引打开写磁盘文件;
若所述写磁盘文件中已写入的消息量达到预设的最大消息量,则关闭所述写磁盘文件,创建并打开一个磁盘文件作为新的写磁盘文件,更新所述写磁盘文件索引。
3.根据权利要求1所述的方法,其特征在于,在所述消息量达到预设的消息下限值时,从所述预先确定的磁盘文件中顺序读取消息之前,还包括:
所述监控线程查询预先确定的磁盘文件以确定所述磁盘文件中是否存在未读取的缓存消息;
若所述磁盘文件中不存在未读取的缓存消息,则使所述监控线程睡眠预设的时间。
4.根据权利要求3所述的方法,其特征在于,所述监控线程查询预先确定的磁盘文件以确定所述磁盘文件中是否存在未读取的缓存消息之前,还包括:
在读磁盘文件索引以及待读取的磁盘文件均存在时,根据所述读磁盘文件索引确定待读取的磁盘文件,其中,所述读磁盘文件索引包括当前待读取的磁盘文件名,当前读取消息的位置对应的读指针以及当前读取的消息量;
在读磁盘文件索引不存在且待读取的磁盘文件存在时,按照消息写入磁盘文件的顺序从剩余的磁盘文件中确定消息写入在先的磁盘文件,将消息写入在先的磁盘文件作为待读取的磁盘文件,初始化所述磁盘文件的当前读取消息的位置对应的读指针为零,当前读取的消息量为零;
在待读取的磁盘文件不存在时,使所述监控线程睡眠预设的时间。
5.根据权利要求3所述的方法,其特征在于,所述监控线程查询预先确定的磁盘文件以确定所述磁盘文件中是否存在未读取的缓存消息,包括:
判断待读取的磁盘文件的文件名与根据写磁盘文件索引确定的写磁盘文件的文件名是否匹配;
若所述待读取的磁盘文件的文件名与所述写磁盘文件的文件名匹配,则比较当前读取的消息量与所述写磁盘文件的当前写入的消息量;
在当前读取的消息量小于所述写磁盘文件的当前写入的消息量时,确定所述磁盘文件中存在未读取的缓存消息;
在当前读取的消息量大于或等于所述写磁盘文件的当前写入的消息量时,确定所述磁盘文件中不存在未读取的缓存消息,使所述监控线程睡眠预设的时间;
若所述待读取的磁盘文件的文件名与所述写磁盘文件的文件名不匹配,则判断所述待读取的磁盘文件内的消息量是否达到预设的最大消息量;
在所述待读取的磁盘文件内的消息量达到所述最大消息量时,关闭并删除所述待读取的磁盘文件,按照消息写入磁盘文件的顺序从剩余的磁盘文件中确定消息写入在先的磁盘文件,将消息写入在先的磁盘文件作为待读取的磁盘文件,初始化所述磁盘文件的当前读取消息的位置对应的读指针为零,当前读取的消息量为零;
在所述待读取的磁盘文件内的消息量未达到所述最大消息量时,确定所述待读取的磁盘文件中存在未读取的缓存消息。
6.一种基于磁盘缓存的消息队列的实现装置,其特征在于,包括:
消息监控单元,用于创建监控线程以按照预设的周期值周期性的监控消息队列中的消息量;
磁盘写入单元,用于在所述消息量达到预设的消息上限值时,将再接收到的消息转换为二进制序列串,将所述二进制序列串顺序写入预先确定的磁盘文件,记录所述磁盘文件的写入的消息量和写入消息的偏移位置;
消息写入单元,用于在所述消息量达到预设的消息下限值时,从所述预先确定的磁盘文件中顺序读取消息,将所述消息写入所述消息队列,记录读取的消息量和读取消息的偏移位置。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京锐安科技有限公司,未经北京锐安科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510547996.2/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种异地灾备的方法和系统
- 下一篇:跨平台移动Web应用运行引擎