一种基于分布式锁的信息发送方法、装置及存储介质制造方法及图纸

技术编号:31374413 阅读:15 留言:0更新日期:2021-12-15 11:06
本发明专利技术公开了一种基于分布式锁的信息发送方法、装置及存储介质,方法包括:接收第一信息发送请求消息,包括接收方手机号码和信息;根据接收方手机号码、信息和时间段,生成发送信息标识;保存接收方手机号码、信息、时间段和发送信息标识到第二信息发送请求消息;发送第二信息发送请求消息给消息队列;从消息队列获取第二信息发送请求消息;对发送信息标识增加分布式锁,如果增加分布式锁成功,则发送信息给接收方手机号码。通过本发明专利技术实施例,解决了多个短信平台实例从消息队列中发送短信存在重复发送相同短信给用户的问题,减少了短信发送费用、避免用户收到多个相同的短信,从而提高了用户体验。高了用户体验。高了用户体验。

【技术实现步骤摘要】
一种基于分布式锁的信息发送方法、装置及存储介质


[0001]本专利技术涉及计算机
,尤其涉及一种基于分布式锁的信息发送方法、装置及存储介质。

技术介绍

[0002]越来越多的公司都有自己的短信服务平台,用于管理公司内部所有的短信发送业务。为了应对短信发送的高并发请求,短信平台通常会采用消息队列,以将短信发送申请的处理和短信发送服务商分隔开,这样即使遇到突发大流量的状况,也可以先将短信发送信息暂时存放在消息队列中进行缓存,之后再逐个进行处理,从而保障了短信平台的高可用。但是消息队列有个经常会遇到的问题,即同一条数据的重复消费问题,这样导致同一个手机号码会由于消息的重复消费导致收到了多条同样的内容,这不仅会影响短信平台的可靠性,也会造成很大的经济损失,同时也会影响用户体验。

技术实现思路

[0003]本专利技术的主要目的在于提供一种基于分布式锁的信息发送方法、装置及存储介质,旨在解决现有技术中通过消息队列发送短信遇到的同一条数据重复消费问题,从而使同一个手机号码由于消息的重复消费导致收到了多条同样的内容,这不仅会影响短信平台的可靠性,也会造成很大的经济损失,同时也会影响用户体验。
[0004]为实现上述目的,本专利技术提供了一种基于分布式锁的信息发送方法,所述方法包括以下步骤:
[0005]接收第一信息发送请求消息,所述第一信息发送请求消息包括接收方手机号码和信息;
[0006]根据所述接收方手机号码、所述信息和时间段,生成发送信息标识;
[0007]保存所述接收方手机号码、所述信息、所述时间段和所述发送信息标识到第二信息发送请求消息;
[0008]发送所述第二信息发送请求消息给消息队列;
[0009]从所述消息队列获取所述第二信息发送请求消息;
[0010]对所述发送信息标识增加分布式锁;如果增加所述分布式锁成功,则发送所述信息给所述接收方手机号码;如果增加所述分布式锁失败,则不发送所述信息给所述接收方手机号码。
[0011]可选地,所述生成发送信息标识,通过以下步骤实现:
[0012]对所述接收方手机号码、所述信息和所述时间段进行MD5计算,获得MD5值,所述MD5值作为所述发送信息标识。
[0013]可选地,所述时间段通过以下步骤获取:
[0014]把一段时间分成多个所述时间段,所述时间段的时长根据允许重复发送信息的时间间隔的时长进行设置;
[0015]获取接收到所述信息发送请求消息的时刻;
[0016]根据所述时刻,在所述多个所述时间段中进行匹配,获得匹配的所述时间段。
[0017]可选地,所述对所述发送信息标识增加分布式锁,包括以下步骤:
[0018]使用Redis数据库的setnx命令把所述发送信息标识存储到所述Redis数据库中;
[0019]如果存储成功,表示增加所述分布式锁成功;如果存储失败,表示增加所述分布式锁失败。
[0020]可选地,所述方法还包括以下步骤:
[0021]获取所述第二信息发送请求消息的所述时间段;
[0022]获取所述时间段的时长;
[0023]设置所述时长为所述setnx命令的超时时间。
[0024]可选地,所述方法还包括以下步骤:
[0025]接收所述第一信息发送请求消息后,对所述接收方手机号码和所述信息进行合法性检测;
[0026]如果所述合法性检测失败,则丢弃所述第一信息发送请求消息;如果所述合法性检测成功,则继续进行后续步骤处理。
[0027]可选地,所述信息包括短信、彩信、视频短信中的至少一个。
[0028]此外,为实现上述目的,本专利技术还提出一种基于分布式锁的信息发送装置,所述装置包括:
[0029]接收单元,用于接收第一信息发送请求消息,所述第一信息发送请求消息包括接收方手机号码和信息;
[0030]计算单元,用于根据所述接收方手机号码、所述信息和时间段,生成发送信息标识;还用于保存所述接收方手机号码、所述信息、所述时间段和所述发送信息标识到第二信息发送请求消息;
[0031]发送单元,用于发送所述第二信息发送请求消息给消息队列;
[0032]分布式锁单元,用于从所述消息队列获取所述第二信息发送请求消息;还用于对所述发送信息标识增加分布式锁;如果增加所述分布式锁成功,则发送所述信息给所述接收方手机号码;如果增加所述分布式锁失败,则不发送所述信息给所述接收方手机号码。
[0033]此外,为实现上述目的,本专利技术还提出一种电子设备,所述电子设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于分布式锁的信息发送程序,所述基于分布式锁的信息发送程序配置为实现如上文所述的基于分布式锁的信息发送方法的步骤。
[0034]此外,为实现上述目的,本专利技术还提出一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上文所述的基于分布式锁的信息发送方法的步骤。
[0035]本专利技术通过对消息队列中的发送信息进行分布式锁,解决了多个短信平台进程或线程从消息队列中发送短信存在重复发送相同短信给用户的问题,减少了短信发送费用、避免用户收到多个相同的短信,从而提高了用户体验。
附图说明
[0036]图1为本专利技术提供的基于分布式锁的信息发送方法的一个流程示意图。
[0037]图2为本专利技术提供的基于分布式锁的信息发送方法的另一个流程示意图。
[0038]图3为本专利技术提供的匹配时间段的一个流程示意图。
[0039]图4为本专利技术提供的设置分布式锁超时时间的一个流程示意图。
[0040]图5为本专利技术提供的基于分布式锁的信息发送装置的结构框图。
[0041]图6为本专利技术提供的一种电子设备的结构示意图。
[0042]本专利技术目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
[0043]为了使本专利技术所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅以解释本专利技术,并不用于限定本专利技术。
[0044]在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本专利技术的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。
[0045]需要说明的是,本专利技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
[0046]在一个实施例中,如图1所示,本专利技术提供一种基于分布式锁的信息发送方法,所述方法包括:
[0047]步骤101、接收第一信息发送请求消息,所述第一信息发送请求消息包括接收方手机号码和信息。
[0048]在本申请实施例中,短信服务平台提供API接口给业务层调用,业务层通过调用短信服务平台提供的API本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于分布式锁的信息发送方法,其特征在于,所述方法包括以下步骤:接收第一信息发送请求消息,所述第一信息发送请求消息包括接收方手机号码和信息;根据所述接收方手机号码、所述信息和时间段,生成发送信息标识;保存所述接收方手机号码、所述信息、所述时间段和所述发送信息标识到第二信息发送请求消息;发送所述第二信息发送请求消息给消息队列;从所述消息队列获取所述第二信息发送请求消息;对所述发送信息标识增加分布式锁;如果增加所述分布式锁成功,则发送所述信息给所述接收方手机号码;如果增加所述分布式锁失败,则不发送所述信息给所述接收方手机号码。2.根据权利要求1所述的方法,其特征在于,所述生成发送信息标识,通过以下步骤实现:对所述接收方手机号码、所述信息和所述时间段进行MD5计算,获得MD5值,所述MD5值作为所述发送信息标识。3.根据权利要求1所述的方法,其特征在于,所述时间段通过以下步骤获取:把一段时间分成多个所述时间段,所述时间段的时长根据允许重复发送信息的时间间隔的时长进行设置;获取接收到所述信息发送请求消息的时刻;根据所述时刻,在所述多个所述时间段中进行匹配,获得匹配的所述时间段。4.根据权利要求1所述的方法,其特征在于,所述对所述发送信息标识增加分布式锁,包括以下步骤:使用Redis数据库的setnx命令把所述发送信息标识存储到所述Redis数据库中;如果存储成功,表示增加所述分布式锁成功;如果存储失败,表示增加所述分布式锁失败。5.根据权利要求4所述的方法,其特征在于,所述方法还包括以下步骤:获取所述第二信息发送请求消息的所述时间段;获取所述时间段的时长;设置所述时长...

【专利技术属性】
技术研发人员:李铁擎
申请(专利权)人:上海德吾信息科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1