[发明专利]一种实现消息优先级分发的方法及系统有效
申请号: | 201210226678.2 | 申请日: | 2012-06-29 |
公开(公告)号: | CN103516585B | 公开(公告)日: | 2017-04-26 |
发明(设计)人: | 王博 | 申请(专利权)人: | 北京奇虎科技有限公司;奇智软件(北京)有限公司 |
主分类号: | H04L12/58 | 分类号: | H04L12/58 |
代理公司: | 北京市隆安律师事务所11323 | 代理人: | 权鲜枝 |
地址: | 100088 北京市西城区新*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 实现 消息 优先级 分发 方法 系统 | ||
1.一种实现消息优先级分发的方法,其特征在于,包括下述步骤:
步骤1、在Redis数据库中设置记录注册用户信息的用户队列;
步骤2、利用Redis数据库的zAdd命令配置由待分发消息构成的消息队列,对待分发消息根据其不同优先级设定不同的权重后加入到消息队列中;
步骤3、建立用户队列内的用户和消息队列内的待分发消息之间的映射关系;
步骤4、接收登录用户的请求信息,根据所述映射关系查找对应所述登录用户的待分发消息;
步骤5、从查找到的待分发消息中将权重最高的待分发消息发送给所述登录用户;
其中,所述步骤2中设定不同的权重是通过在Redis数据库中创建的类函数实现的;所述类函数包括两个公开函数和一个私有函数;所述公开函数实现获取消息队列中权重最小的元素或权重最大的元素;所述私有函数用于使用watch和exec来保证公开函数调用的自身原子性。
2.如权利要求1所述的方法,其特征在于,所述步骤3中的映射关系是依据用户ID与待分发消息的Value值相对应建立,并将所述映射关系保存到Redis数据库中。
3.如权利要求2所述的方法,其特征在于,对用户已经接收过的待分发消息,将其Value由该用户的映射关系中删除。
4.如权利要求1所述的方法,其特征在于,所述步骤5中,待分发消息仅发送给用户队列中的登录用户。
5.如权利要求1所述的方法,其特征在于,服务器随时将新登录的用户ID加入到用户队列中,随时将新的待分发消息加上权重后加入到消息队列中,并随时将新的待分发消息与用户队列中的用户ID建立映射关系。
6.一种实现消息优先级分发的系统,其特征在于,该系统包括:
用户队列模块,在Redis数据库中设置记录注册用户信息的用户队列;
消息队列模块,利用Redis数据库的zAdd命令配置由待分发消息构成的消息队列,对待分发消息根据其不同优先级设定不同的权重后加入到消息队列中;
映射模块,建立用户队列内的用户和消息队列内的待分发消息之间的映射关系;
接收模块,接收登录用户的请求信息,根据映射模块中的对应关系查找对应的待分发消息;
发送模块,从查找到的待分发消息中将权重最高的待分发消息发送给所述登录用户;
其中,所述消息队列模块中,所述设定不同的权重是通过在Redis数据库中创建的类函数实现的;所述类函数包括两个公开函数和一个私有函数;所述公开函数实现获取消息队列中权重最小的元素或权重最大的元素;所述私有函数用于使用watch和exec来保证公开函数调用的自身原子性。
7.如权利要求6所述的系统,其特征在于,所述映射模块中的映射关系是依据用户ID与待分发消息的Value值相对应建立,并将所述映射关系保存到Redis数据库中。
8.如权利要求7所述的系统,其特征在于,对用户已经接收过的待分发消息,将其Value由该用户的映射关系中删除。
9.如权利要求6所述的系统,其特征在于,所述发送模块中待分发消息仅发送给用户队列中的标明的登录用户。
10.如权利要求6所述的系统,其特征在于,用户队列模块随时将新登录的用户ID加入到用户队列中,消息队列模块随时将新的待分发消息加上权重后加入到消息队列中,映射模块随时将新的待分发消息与用户队列中的用户ID建立映射关系。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京奇虎科技有限公司;奇智软件(北京)有限公司,未经北京奇虎科技有限公司;奇智软件(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210226678.2/1.html,转载请声明来源钻瓜专利网。