[发明专利]基于Redis构建权限池和延迟队列的方法、装置及存储介质在审
申请号: | 202310347297.8 | 申请日: | 2023-04-03 |
公开(公告)号: | CN116366587A | 公开(公告)日: | 2023-06-30 |
发明(设计)人: | 房晓明;李黔辉;张金宝;蒋新新 | 申请(专利权)人: | 上海中通吉网络技术有限公司 |
主分类号: | H04L51/214 | 分类号: | H04L51/214;H04L47/56 |
代理公司: | 北京细软智谷知识产权代理有限责任公司 11471 | 代理人: | 葛钟 |
地址: | 201799 上*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 redis 构建 权限 延迟 队列 方法 装置 存储 介质 | ||
本发明涉及基于Redis构建权限池和延迟队列的方法、装置及存储介质,应用于消息推送技术领域,包括:本申请通过获取用户与模板消息的订阅关系,并根据订阅关系在Redis构建权限池,当需要给用户推送消息时,将消息队列(第一MQ)中需要推送的消息同步到延迟队列中,通过延迟队列(FIFO队列)逐一向用户推送其订阅的模板消息,本申请利用redis构建的FIFO队列,可以避免并发高的情况下,发送失败导致的消息漏发和乱序,且本申请发送的消息都是用户订阅过的模板消息,可以避免每日消息推送接口调用次数的浪费。
技术领域
本发明涉及消息推送技术领域,具体涉及基于Redis构建权限池和延迟队列的方法、装置及存储介质。
背景技术
目前微信小程序消息推送接口做了次数限制,每天只能调用固定次数N,如果超过这个限制,就会直接返回错误信息,推送失败,并且微信做了订阅限制,用户只有登录小程序的时候点击允许推送选定的模板消息,我们才能推送,允许之后模板订阅次数加一,如果用户没有该模板消息的订阅次数,依然给用户推送的话也是会直接返回失败,但是目前我们是一股脑推送,并没有去判断这个订阅关系,导致浪费了很多接口调用次数。
发明内容
有鉴于此,本发明的目的在于提供基于Redis构建权限池和延迟队列的方法、装置及存储介质,以解决现有技术中,并没有判断用户与模板的订阅关系,而是采取一股脑推送的方式,而消息推送接口,每天推送消息的次数有限制,导致浪费了很多接口调用次数的问题。
根据本发明实施例的第一方面,提供基于Redis构建权限池和延迟队列的方法,所述方法包括:
获取用户与模板消息的订阅关系,在redis数据库中生成该用户与模板订阅关系的第一MQ,用户每订阅一次,在第一MQ中存储一个推送消息,用于构建权限池;
在tidb数据库中同步第一MQ中每一个推送消息的状态队列,得到第二MQ;
当需要调用推送接口向用户推送消息时,将第一MQ中需要推送的消息同步存储到延迟队列中,同时更改第二MQ中在延迟队列中的消息的状态;
若延迟队列中消息推送成功,则将第一MQ中对应的推送消息删除,同时更改第二MQ中该消息的状态;
若延迟队列中消息推送失败,则标识该消息允许重试,同时更改第二MQ该消息的状态,直到第一MQ中所有消息被清空。
优选地,
所述推送消息包括用户ID、模板ID以及订阅次数。
优选地,
所述用户每订阅一次,在第一MQ中存储一个推送消息,包括:
当所述用户每订阅一次,通过订阅消息推送接口将推送消息丢给第一MQ中,若所述订阅消息推送接口发送超时或者报出其他异常,则通过MQ的重试机制重新进行发送。
优选地,
所述每一个推送消息的状态包括:未发送状态、延迟队列状态、发送成功状态以及发送失败重试状态。
优选地,
所述若延迟队列中消息推送失败包括:
推送超时、消息推送接口每天的调用次数用尽或报出其他异常。
优选地,
所述推送超时或报出其他异常的情况下,标识该消息允许重试,同时更改第二MQ该消息的状态;
所述消息推送接口每天的调用次数用尽的情况下,停止所述延迟队列中该消息以及剩余消息的推送,直到第二天所述消息推送接口每天的调用次数重新刷新再次推送。
根据本发明实施例的第二方面,提供基于Redis构建权限池和延迟队列的装置,所述装置包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海中通吉网络技术有限公司,未经上海中通吉网络技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202310347297.8/2.html,转载请声明来源钻瓜专利网。