[发明专利]基于MQ的高并发短信发送方法和装置有效
申请号: | 202211398065.7 | 申请日: | 2022-11-09 |
公开(公告)号: | CN116112880B | 公开(公告)日: | 2023-09-08 |
发明(设计)人: | 王龙;杭达宏;陈涛 | 申请(专利权)人: | 上海创蓝云智信息科技股份有限公司 |
主分类号: | H04W4/14 | 分类号: | H04W4/14 |
代理公司: | 北京知果之信知识产权代理有限公司 11541 | 代理人: | 苏利 |
地址: | 201600 上海市松*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 mq 并发 短信 发送 方法 装置 | ||
本申请公开了一种基于MQ的高并发短信发送方法和装置,本方法通过根据预设的短信的通道和优先级建立对应的mq生产者和mq消费者;根据待发送短信的短信类型和优先级将所述待发送短信加入对应的mq生产者队列;建立所述通道与运营商的长连接,当所述长连接登录成功后启动所述通道对应的mq消费者,并保存所述长连接的连接状态至缓存中;根据连接状态基于对应的预设规则进行短信消费,将待发送短信提交至运营商服务端以进行短信发送。本申请解决相关技术中短信消费时消费体容易丢失的技术问题,实现自动使消息体返回原队列,全程持久化,保证消息体被正确消费;任意单点故障都不会影响整个队列的操作,同时,系统吞吐量不再受到消息入队的影响。
技术领域
本申请属于计算机技术领域,具体而言,涉及一种基于MQ的高并发短信发送方法和装置。
背景技术
由于运营商对每个短信通道都限制了流速,短信服务商在设计短信网关时需要要对通道单独设置队列处理,相互隔离。
目前主流的短信公司都是采用Redis作为通道队列。每个通道设计自己的队列,短信发送时,lpush入队,网关建立连接后使用brpop拉取短信。
因redis单线程模型,整体的生产和消费的tps(系统吞吐量)固定,生产和消费的tps会互相影响,当有大量短信发送时,redis会有大量数据入队,消息拉取的速度就会收到很大影响,容易导致消费体丢失。
针对相关技术中短信消费时消费体容易丢失的技术问题,目前尚未提出有效的解决方案。
发明内容
因此,本申请实施例在于提供一种基于MQ的高并发短信发送方法、装置、电子设备及存储介质,旨在解决上述现有技术存在的至少一个问题。
为实现上述目的,第一方面,本申请提供了一种基于MQ的高并发短信发送方法,包括:
根据预设的短信的通道和优先级建立对应的mq生产者和mq消费者;
根据待发送短信的短信类型和优先级将所述待发送短信加入对应的mq生产者队列;
建立所述通道与运营商的长连接,当所述长连接登录成功后启动所述通道对应的mq消费者,并保存所述长连接的连接状态至缓存中;
根据连接状态基于对应的预设规则进行短信消费,将待发送短信提交至运营商服务端以进行短信发送。
在一个实施例中,所述连接状态包括以下状态中的其中一个:连接成功、连接失败、连接暂停。
在一个实施例中,当所述连接状态为连接成功时,所述基于对应的预设规则进行短信消费包括:所述mq消费者将对应的mq生产者的消息拉取储存至本地无锁阻塞队列,从所述本地无锁阻塞队列中拉取消息进行短信消费。
在一个实施例中,当所述连接状态由连接成功变为连接断开时,待所述本地无锁阻塞队列中的消息拉取结束后,停止对应的所述mq消费者进行消息消费。
在一个实施例中,当所述连接状态为连接失败或连接暂停时,所述mq消费者不消费消息。
在一个实施例中,当所述连接状态为连接失败时,还包括:当有线程发起通道重连时,重新建立所述通道与运营商的长连接,当重新建立所述通道与运营商的长连接超过预设时间时,判定重连失败,停止该线程对应的mq消费者进行mq消费。
在一个实施例中,在所述根据待发送短信的短信类型和优先级将所述待发送短信加入对应的mq生产者队列之前,还包括:基于预设条件对所述待发送短信进行规则过滤,去除不符合发送条件的短信。
第二方面,本申请还提供了一种基于MQ的高并发短信发送装置,包括:
消息集建立模块,用于根据预设的短信的通道和优先级建立对应的mq生产者和mq消费者;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海创蓝云智信息科技股份有限公司,未经上海创蓝云智信息科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202211398065.7/2.html,转载请声明来源钻瓜专利网。