[发明专利]一种消息处理的方法及装置在审
申请号: | 201711326101.8 | 申请日: | 2017-12-13 |
公开(公告)号: | CN107911484A | 公开(公告)日: | 2018-04-13 |
发明(设计)人: | 姜明;李朝铭 | 申请(专利权)人: | 浪潮软件股份有限公司 |
主分类号: | H04L29/08 | 分类号: | H04L29/08;H04L12/803;H04L12/863;H04L12/911 |
代理公司: | 济南信达专利事务所有限公司37100 | 代理人: | 李世喆 |
地址: | 250100 山东*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 消息 处理 方法 装置 | ||
1.一种消息处理的方法,其特征在于,
确定至少一个客户订阅的至少一个主题;
针对每个所述主题,确定订阅当前主题的每个客户对应的针对所述当前主题的客户连接;
为每个所述客户连接设置客户连接缓冲池;
包括:
周期性地分别获取每个所述主题的消息;
针对每个所述主题,执行:确定当前主题对应的至少一个客户连接;将获取的所述当前主题的消息存储到所述至少一个客户连接对应的至少一个客户连接缓冲池中;
从所述至少一个客户连接缓冲池中获取消息;
分别将位于同一个所述客户连接缓冲池中的消息进行组包,生成每个所述客户连接缓冲池对应的待推送的数据包;
分别将每个所述客户连接缓冲池对应的待推送的数据包,推送给对应的客户连接;
进一步包括:
针对每个所述客户连接设置推送权重;
所述将获取的所述当前主题的消息存储到所述至少一个客户连接对应的至少一个客户连接缓冲池中,包括:
针对所述至少一个客户连接中的每个所述客户连接,执行:
确定当前客户连接对应的推送权重;
根据所述当前客户连接对应的推送权重,确定需要向所述当前客户连接推送的所述当前主题的消息;
将需要向所述当前客户连接推送的所述当前主题的消息存储到对应的客户连接缓冲池中;
所述确定当前客户连接对应的推送权重,包括:
接收所述当前客户连接对应的客户输入的初始推送权重;
确定所述当前客户连接对应的客户的接收速率;
根据所述接收速率对所述初始推送权重进行调整,生成所述当前客户连接对应的推送权重;
进一步包括:
预先设置至少一个任务队列,并为每个所述任务队列分配推送线程;
在所述将获取的所述当前主题的消息存储到所述至少一个客户连接对应的至少一个客户连接缓冲池中之后,进一步包括:
针对所述至少一个客户连接中的每个所述客户连接生成待处理任务,其中,所述待处理任务中包括待处理的客户连接的信息;
将至少一个所述待处理任务分配给所述至少一个任务队列;
所述从所述至少一个客户连接缓冲池中获取消息,包括:
针对每个所述推送线程,执行:利用当前推送线程,从所述当前推送线程对应的任务队列中获取所述待处理任务,根据所述待处理任务中待处理的客户连接的信息,确定出所述待处理的客户连接,从所述待处理的客户连接对应的客户连接缓冲池中获取消息;
所述分别将位于同一个所述客户连接缓冲池中的消息进行组包,生成每个所述客户连接缓冲池对应的待推送的数据包,包括:
针对每个所述推送线程,执行:利用所述当前推送线程,将所述待处理的客户连接对应的客户连接缓冲池中的消息进行组包,生成当前待推送的数据包;
所述分别将每个所述客户连接缓冲池对应的待推送的数据包,推送给对应的客户连接,包括:
针对每个所述推送线程,执行:利用所述当前推送线程,将所述当前待推送的数据包推送给所述待处理的客户连接;
进一步包括:预先设置至少一个获取线程,所述至少一个获取线程用于执行所述分别获取每个所述主题的消息;
进一步包括:
实时判断所述至少一个获取线程当前次获取的消息的数量与至少一个所述推送线程当前次推送的消息的数量之差是否大于等于第一预设值,如果是,则将没有休眠的至少一个所述获取线程中的第二预设值个所述获取线程休眠。
2.一种消息处理的装置,其特征在于,包括:
服务管理模块,用于确定至少一个客户订阅的至少一个主题;针对每个所述主题,确定订阅当前主题的每个客户对应的针对所述当前主题的客户连接;为每个所述客户连接设置客户连接缓冲池;
消息获取模块,用于周期性地分别获取每个所述主题的消息;针对每个所述主题,执行:确定当前主题对应的至少一个客户连接;将获取的所述当前主题的消息存储到所述至少一个客户连接对应的至少一个客户连接缓冲池中;
消息推送模块,用于从所述至少一个客户连接缓冲池中获取消息;分别将位于同一个所述客户连接缓冲池中的消息进行组包,生成每个所述客户连接缓冲池对应的待推送的数据包;分别将每个所述客户连接缓冲池对应的待推送的数据包,推送给对应的客户连接;
进一步包括:频率设置模块,用于针对每个所述客户连接设置推送权重;
所述消息获取模块,在执行所述将获取的所述当前主题的消息存储到所述至少一个客户连接对应的至少一个客户连接缓冲池中时,具体用于:
针对所述至少一个客户连接中的每个所述客户连接,执行:
确定当前客户连接对应的推送权重;
根据所述当前客户连接对应的推送权重,确定需要向所述当前客户连接推送的所述当前主题的消息;
将需要向所述当前客户连接推送的所述当前主题的消息存储到对应的客户连接缓冲池中;
所述消息获取模块,在执行所述确定当前客户连接对应的推送权重时,具体用于:
接收所述当前客户连接对应的客户输入的初始推送权重;
确定所述当前客户连接对应的客户的接收速率;
根据所述接收速率对所述初始推送权重进行调整,生成所述当前客户连接对应的推送权重;
进一步包括:
队列设置模块,用于设置至少一个任务队列,并为每个所述任务队列分配推送线程;
所述消息获取模块,用于在所述将获取的所述当前主题的消息存储到所述至少一个客户连接对应的至少一个客户连接缓冲池中之后,执行:
针对所述至少一个客户连接中的每个所述客户连接生成待处理任务,其中,所述待处理任务中包括待处理的客户连接的信息;将至少一个所述待处理任务分配给所述至少一个任务队列;
所述消息推送模块,用于执行:
针对每个所述推送线程,执行:
利用当前推送线程,从所述当前推送线程对应的任务队列中获取所述待处理任务,根据所述待处理任务中待处理的客户连接的信息,确定出所述待处理的客户连接,从所述待处理的客户连接对应的客户连接缓冲池中获取消息;
利用所述当前推送线程,将所述待处理的客户连接对应的客户连接缓冲池中的消息进行组包,生成当前待推送的数据包;
利用所述当前推送线程,将所述当前待推送的数据包推送给所述待处理的客户连接;
进一步包括:
线程设置模块,用于设置至少一个获取线程,所述至少一个获取线程用于执行所述分别获取每个所述主题的消息;
进一步包括:
资源分配模块,用于实时判断所述至少一个获取线程当前次获取的消息的数量与至少一个所述推送线程当前次推送的消息的数量之差是否大于等于第一预设值,如果是,则将没有休眠的至少一个所述获取线程中的第二预设值个所述获取线程休眠。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浪潮软件股份有限公司,未经浪潮软件股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711326101.8/1.html,转载请声明来源钻瓜专利网。
- 上一篇:浓缩桃浊汁及制备方法
- 下一篇:一种矿物质饮品及其制备方法