一种防止信息重复发送方法、装置及存储介质

文档序号:1835052 发布日期:2021-11-12 浏览:15次 >En<

阅读说明:本技术 一种防止信息重复发送方法、装置及存储介质 (Method and device for preventing repeated sending of information and storage medium ) 是由 李铁擎 于 2021-08-26 设计创作,主要内容包括:本发明公开了一种防止信息重复发送方法、装置及存储介质,方法包括:接收申请信息发送标识消息,根据业务类型、接收方手机号码生成信息发送标识并返回信息发送标识,设置信息发送标识为第一状态;接收信息发送请求消息,设置信息发送标识为第二状态;对信息发送标识增加分布式锁,增加分布式锁成功且信息发送标识处于第二状态,则发送信息给接收方手机号码。通过本发明实施例,解决了业务层发送短信存在重复发送相同短信给用户的问题,减少了短信发送费用、避免用户收到多个相同的短信,从而提高了用户体验。(The invention discloses a method, a device and a storage medium for preventing repeated sending of information, wherein the method comprises the following steps: receiving an application information sending identification message, generating an information sending identification according to the service type and the mobile phone number of a receiver, returning the information sending identification, and setting the information sending identification to be in a first state; receiving an information sending request message, and setting an information sending identifier to be in a second state; and adding a distributed lock to the information sending identifier, and if the distributed lock is successfully added and the information sending identifier is in a second state, sending the information to the mobile phone number of the receiver. The embodiment of the invention solves the problem that the service layer sends the short message repeatedly and sends the same short message to the user, reduces the cost for sending the short message, and avoids the user from receiving a plurality of same short messages, thereby improving the user experience.)

一种防止信息重复发送方法、装置及存储介质

技术领域

本发明涉及计算机技术领域,尤其涉及一种防止信息重复发送方法、装置及存储介质。

背景技术

越来越多的公司建立自己的短信服务平台,用于处理公司内部庞大的短信发送任务。由于每条短信都是有价格的,控制短信的发送量也是短信服务平台需要实现的一个策略,而其中一种难以避免的问题就是短信重复发送的状况,该状况主要发生在业务方重复调用短信服务平台的短信发送接口导致的。若没有一个有效的重复验证机制,短信服务平台是无法区分出短信内容是否已发送,也就没有有效的拦截机制进行拦截。从而导致同一个手机号码由于业务层重复发送短信收到了多条同样的内容,这不仅会会造成经济损失,同时也会影响用户体验。

发明内容

本发明的主要目的在于提供一种防止信息重复发送方法、装置及存储介质,旨在解决现有技术中业务方重复调用短信服务平台的短信发送接口导致重复发送短信问题。

为实现上述目的,本发明提供了一种防止信息重复发送方法,所述方法包括以下步骤:

接收申请信息发送标识消息,所述申请信息发送标识消息包括业务类型、接收方手机号码;根据所述业务类型、所述接收方手机号码生成信息发送标识并返回所述信息发送标识,设置所述信息发送标识为第一状态;

接收信息发送请求消息,所述信息发送请求消息包括所述信息发送标识、所述接收方手机号码和信息,设置所述信息发送标识为第二状态;

对所述信息发送标识增加分布式锁;如果增加所述分布式锁成功且所述信息发送标识处于所述第二状态,则发送所述信息给所述接收方手机号码;如果增加所述分布式锁失败或所述信息发送标识不处于所述第二状态,则不发送所述信息给所述接收方手机号码。

可选地,所述信息发送标识通过以下步骤生成:

为所述接收方手机号码和所述业务类型分配一个标识,所述标识作为所述信息发送标识;

保存所述接收方手机号码、所述业务类型与所述信息发送标识的对应关系。

可选地,所述接收申请信息发送标识消息后,还包括以下步骤:

根据所述业务类型、所述接收方手机号码判断是否存在对应的所述信息发送标识;

如果存在所述信息发送标识,则进一步判断所述信息发送标识的状态;如果所述信息发送标识处于所述第一状态,则返回所述信息发送标识;如果所述信息发送标识不处于所述第一状态,则不返回所述信息发送标识;

如果不存在所述信息发送标识,则根据所述业务类型、所述接收方手机号码生成所述信息发送标识并返回所述信息发送标识,设置所述信息发送标识为第一状态。

可选地,所述接收信息发送请求消息后,还包括以下步骤:

判断所述信息发送请求消息中携带的所述信息发送标识是否已存在;

如果已存在,则进一步判断信息发送标识的状态;如果所述信息发送标识处于所述第一状态,保存所述信息发送请求消息并设置所述信息发送标识为所述第二状态;如果所述信息发送标识不处于所述第一状态,则丢弃所述信息发送请求消息;

如果不存在,则丢弃所述信息发送请求消息。

可选地,所述方法还包括以下步骤:

调用短信服务商提供的短信发送接口发送所述信息成功后,设置所述信息发送标识为第三状态。

可选地,所述方法还包括以下步骤:

根据所述业务类型为所述信息发送标识设置有效时长;

所述有效时长到期后删除所述信息发送标识。

可选地,所述对所述信息发送标识增加分布式锁,包括以下步骤:

使用Redis数据库的setnx命令把所述信息发送标识存储到所述Redis数据库中;

如果存储成功,表示增加所述分布式锁成功;如果存储失败,表示增加所述分布式锁失败。

此外,为实现上述目的,本发明还提出一种防止信息重复发送装置,所述装置包括:

创建单元,用于接收申请信息发送标识消息,所述申请信息发送标识消息包括业务类型、接收方手机号码;根据所述业务类型、所述接收方手机号码生成信息发送标识并返回所述信息发送标识,设置所述信息发送标识为第一状态;

接收单元,用于接收信息发送请求消息,所述信息发送请求消息包括所述信息发送标识、所述接收方手机号码和信息,设置所述信息发送标识为第二状态;

发送单元,用于对所述信息发送标识增加分布式锁;如果增加所述分布式锁成功且所述信息发送标识处于所述第二状态,则发送所述信息给所述接收方手机号码;如果增加所述分布式锁失败或所述信息发送标识不处于所述第二状态,则不发送所述信息给所述接收方手机号码。

此外,为实现上述目的,本发明还提出一种电子设备,所述电子设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的防止信息重复发送程序,所述防止信息重复发送程序配置为实现如上文所述防止信息重复发送方法的步骤。

此外,为实现上述目的,本发明还提出一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上文所述的防止信息重复发送方法的步骤。

本发明通过对信息发送分配唯一信息发送标识并对信息发送标识进行分布式锁,解决了业务层重复调用短信服务平台提供的短信发送接口导致重复发送相同短信给用户的问题,减少了短信发送费用、避免用户收到多个相同的短信,从而提高了用户体验。

附图说明

图1为本发明提供的防止信息重复发送方法的一个流程示意图。

图2为本发明提供的创建信息发送标识的流程示意图。

图3为本发明提供的防止信息重复发送方法的另一个流程示意图。

图4为本发明提供的防止重复申请信息发送标识的流程示意图。

图5为本发明提供的防止重复发送信息发送请求的流程示意图。

图6为本发明提供的防止信息重复发送装置的结构框图。

图7为本发明提供的一种电子设备的结构示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅以解释本发明,并不用于限定本发明。

在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

在一个实施例中,如图1所示,本发明提供一种防止信息重复发送方法,所述方法包括:

步骤101、接收申请信息发送标识消息,所述申请信息发送标识消息包括业务类型、接收方手机号码;根据所述业务类型、所述接收方手机号码生成信息发送标识并返回所述信息发送标识,设置所述信息发送标识为第一状态。

在本申请实施例中,应用层,如用户注册模块在用户注册过程中,需要给用户注册时提供的手机号码发送注册验证码,验证用户手机号码的真实性。因此,应用层需要调用短信服务平台提供的API接口发送注册验证码短信。

为了防止应用层重复调用短信服务平台提供的API接口发送短信,应用层在发送短信之前,需要到短信服务平台申请一个唯一的信息发送标识。只有获取信息发送标识成功后,才允许后续发送短信给用户。

应用层发送申请信息发送标识消息给短信服务平台,携带业务类型和接收方手机号码,如下表:

业务类型 用户注册
接收方手机号码 13800880xxx

业务类型根据应用层具体业务需求进行设置,如:用户注册、欠费提醒、快递通知等。每一种业务类型,对应一种短信内容;业务类型不同,则短信内容也不同。在一段时间内(如用户注册时,60秒内不能重复发送注册验证码给用户)同一种业务,不能发送相同的短信内容给同一用户。

短信服务平台收到申请信息发送标识消息后,获取该消息中的业务类型和接收方手机号码。然后根据业务类型和接收方手机号码,创建一个全局唯一的信息发送标识。创建信息发送标识流程,如图2所示:

步骤1011、为所述接收方手机号码和所述业务类型分配一个标识,所述标识作为所述信息发送标识。

短信服务平台收到申请信息发送标识消息后,使用业务类型+接收方手机号码+当前时间戳组成一个文本信息,然后对该文本信息进行MD5计算,得到32位的16进制的字符串(即MD5值),把该MD5值作为信息发送标识。如:“1+13800880123+1629892732683”文本内容进行MD5计算,得到MD5值如下表。

文本内容 1+13800880123+1629892732683
MD5值 de8d03692a1eac4a7a1694c410387f10

短信服务平台也可以采用其他方法分配一个标识。

步骤1012、保存所述接收方手机号码、所述业务类型与所述信息发送标识的对应关系。

把接收方手机号码和业务类型,及为该接收方手机号码和业务类型分配的信息发送标识保存到关系型数据库(如mysql数据库)。接收方手机号码和业务类型组合成为数据库表的唯一索引,即在数据库中相应的业务类型和接收方手机号码,只有一条对应的信息发送标识数据。如下表:

业务类型 1
接收方手机号码 13800880123
信息发送标识 de8d03692a1eac4a7a1694c410387f10

通过业务类型和接收方手机号码查询数据库,能够查询到对应的信息发送标识。

步骤1013、根据所述业务类型为所述信息发送标识设置有效时长。

业务层根据不同的业务类型,会设置多长时间才允许对触发该业务的用户发送相同的短信内容。如注册业务,需要在60秒以后才允许对用户再次发送注册验证码;欠费提醒业务,在1天之内只能发送一次欠费提醒短信。

短信服务平台根据不同的业务类型,为对应的信息发送标识设置有效时长。有效时长为该业务允许重复发送短信的时长。短信服务平台配置一张业务类型对应的业务类型有效时长配置表,如:

业务类型 有效时长
注册业务 60秒
欠费提醒 24小时

短信服务平台为信息发送标识设置有效时长时,根据该信息发送标识对应的业务类型获取有效时长,然后把该有效时长设置为信息发送标识的有效时长。

步骤1014、所述有效时长到期后删除所述信息发送标识。

短信服务平台为信息发送标识设置有效时长后,启动一个定时器,该有效时长作为定时器的超时时长。定时器超时后,删除对应的信息发送标识。删除信息发送标识后,短信服务平台允许业务层就相同的业务类型和接收方手机号码再次申请信息发送标识,即允许对该手机号码再次发送相同的短信内容。

短信服务平台创建完信息发送标识后,返回给应用层。应用层后续再发送短信时,需要使用该信息发送标识。同时把该信息发送标识的状态设置为第一状态,如:初始状态。

业务类型 1
接收方手机号码 13800880123
信息发送标识 de8d03692a1eac4a7a1694c410387f10
有效时长 60秒
状态 初始状态

步骤102、接收信息发送请求消息,所述信息发送请求消息包括所述信息发送标识、所述接收方手机号码和信息,设置所述信息发送标识为第二状态。

应用层收到短信服务平台返回的信息发送标识后,才允许发送短信;如果没有收到短信服务平台返回的信息发送标识,则不允许发送短信给用户。应用层收到短信服务平台返回的信息发送标识后,构造信息发送请求消息,携带信息发送标识、接收方手机号码、信息。信息可以是短信内容,也可以是短信模板id和对应的参数内容。如:

本实施例中,信息包括:短信、彩信、视频短信等。

短信服务平台收到信息发送请求消息后,把该消息存入消息队列中。消息队列可以是短信服务平台内部自己实现的消息队列,如先进先出的消息队列;也可以是第三方提供的消息队列中间件,如Kafka、RabbitMQ、RocketMQ等消息队列中间件。消息队列具有较多的数据处理吞吐量,如万级、十万级的吞吐量。因此业务层在业务高峰期同时发送大量的信息发送请求消息时,消息队列也能够及时存储。这些大量的信息发送请求消息保存到消息队列后,短信服务平台可以根据自己业务处理能力,逐步从消息队列中获取信息发送请求消息,然后发送对应的信息(短信、彩信或视频短信)给对应的手机号码。

然后短信服务平台把该消息中携带的信息发送标识的状态设置为第二状态,如:待发送状态。

业务类型 1
接收方手机号码 13800880123
信息发送标识 de8d03692a1eac4a7a1694c410387f10
有效时长 60秒
状态 待发送状态

步骤103、对所述信息发送标识增加分布式锁;如果增加所述分布式锁成功且所述信息发送标识处于所述第二状态,则发送所述信息给所述接收方手机号码;如果增加所述分布式锁失败或所述信息发送标识不处于所述第二状态,则不发送所述信息给所述接收方手机号码。

短信服务平台会使用多个短信服务商提供的接口进行短信发送,因此会启动多个线程或进程来进行短信的发送;或者只有一个短信服务提供商时,也可以启动多个线程或进程调用短信服务提供商提供的接口进行短信发送。

每个线程或进程根据自己的业务处理能力,逐步从消息队列(如RabbitMQ消息队列中间件)中获取信息发送请求消息。获取信息发送请求消息后,从该消息中取出信息、接收方手机号码、信息发送标识。如:

短信服务平台发送短信的线程或进程在获取信息发送请求消息后,需要对该消息进行分布式锁,只有分布式锁成功后,才能发送该消息中对应的信息。如果分布式锁失败,则表示该信息已被其他线程处理了,或者该信息是重复信息。

短信服务平台分布式锁通过Redis数据库的setnx命令实现。setnx命令如下:SETkey value。

key为信息发送请求消息中的信息发送标识,value为随机值。如:

set de8d03692a1eac4a7a1694c410387f10 123456

Redis数据库的set命令,只有key值不存在时才能执行成功。因此,某个线程A执行key值为de8d03692a1eac4a7a1694c410387f10的set命令成功后,其他线程(如线程B)就无法再执行key值为de8d03692a1eac4a7a1694c410387f10的set命令。因此,可以通过把信息发送标识作为set命令的key值实现对信息发送请求消息的分布式锁功能。

当线程A获取信息发送请求消息后,使用该消息中的信息发送标识作为set命令的key值,执行该set命令。如果执行成功,则表明之前没有线程对该信息发送请求消息进行了处理,即表示线程A获得该信息发送请求消息的分布式锁,获得该消息的分布式锁后,对该消息进行信息发送,如发送短信给接收方手机号码。其他线程无法再获得该信息发送请求消息的分布式锁,也就无法对该信息发送请求消息进行处理。

分布式线程锁成功后,进一步判断该信息发送标识的状态,只要该信息发送标识的状态处于待发送状态(即第二状态),才允许调用短信服务平台提供的API接口把短信发送给对应的手机号码。如果信息发送标识的状态不是待发送状态,则表明该消息发送标识对应的短信被处理过或是无效的,需要丢弃该信息发送标识对应的信息发送请求消息。

本实施例通过对信息发送分配唯一信息发送标识并对信息发送标识进行分布式锁,解决了业务层重复调用短信服务平台提供的短信发送接口导致重复发送相同短信给用户的问题,减少了短信发送费用、避免用户收到多个相同的短信,从而提高了用户体验。

在一个实施例中,图3提供了图1实施例103步骤后,发送信息后标识信息已发送的流程图。

步骤104、调用短信服务商提供的短信发送接口发送所述信息成功后,设置所述信息发送标识为第三状态。

短信服务平台发送短信成功后,对该短信对应的信息发送标识设置为第三状态,如已发送状态。把信息发送标识的状态设置为已发送状态后,短信服务平台不会对该信息发送标识对应的信息发送请求消息再进行处理。短信服务平台再收到业务层发送的信息发送请求消息后,如果该消息携带的信息发送标识对应的状态为已发送状态,则直接丢弃该信息发送请求消息。

在本实施例中,短信服务平台对发送成功的信息发送标识设置为已发送状态,防止短信服务平台重复处理信息发送请求消息,从而提升短信服务平台的处理能力,同时减少了短信发送费用、避免用户收到异常短信,从而提高了用户体验。

在一个实施例中,图4提供了防止重复申请信息发送标识的流程图。

步骤201、根据所述业务类型、所述接收方手机号码判断是否存在对应的所述信息发送标识。

应用层在某些场景下会存在重复申请信息发送标识的情况,如应用层没有及时收到短信服务平台返回的信息发送标识,则会再次向短信服务平台申请信息发送标识。

短信服务平台收到应用层发送的申请信息发送标识消息后,使用该消息中携带的业务类型、接收方手机号码查询数据库,获取业务类型和接收方手机号码对应的信息发送标识。如:

业务类型 1
接收方手机号码 13800880123

步骤202、如果存在所述信息发送标识,则进一步判断所述信息发送标识的状态;如果所述信息发送标识处于所述第一状态,则返回所述信息发送标识;如果所述信息发送标识不处于所述第一状态,则不返回所述信息发送标识。

如果使用该消息中携带的业务类型、接收方手机号码查询数据库,得到相应的信息发送标识。如使用

业务类型 1
接收方手机号码 13800880123

查询数据库,得到信息发送标识如下:

信息发送标识 de8d03692a1eac4a7a1694c410387f10

然后判断该信息发送标识对应的状态。如果对应的状态是第一状态,如初始状态,则表明应用层没有使用该信息发送标识发送信息发送请求消息给短信服务平台。因此,还需要把该信息发送标识返回给应用层。

如果对应的状态不是第一状态(如初始状态),是其他状态,如已发送状态。则表明应用层已使用该信息发送标识发送了信息发送请求消息给短信服务平台,不需要再返回信息发送标识给应用层。

步骤203、如果不存在所述信息发送标识,则根据所述业务类型、所述接收方手机号码生成所述信息发送标识并返回所述信息发送标识,设置所述信息发送标识为第一状态。

如果使用该消息中携带的业务类型、接收方手机号码查询数据库,没有得到相应的信息发送标识。如使用

业务类型 1
接收方手机号码 13800880123

查询数据库,没有得到信息发送标识。则表明,该业务类型和接收方手机号码对应的信息发送标识被删除或应用层是第一次为该业务类型和接收方手机号码申请信息发送标识。

短信服务平台使用如图2所述流程,为业务类型和接收方手机号码创建一个信息发送标识。如下表所示:

短信服务平台把创建的信息发送标识返回给应用层。

在本实施例中,短信服务平台通过查询业务类型和接收方手机号码是否存在对应的信息发送标识并判断状态,防止应用层重复申请信息发送标识。从而减少了短信服务平台处理的消息,提升了短信服务平台的处理能力。

在一个实施例中,图5提供了防止重复发送信息发送请求的流程图。

步骤301、判断所述信息发送请求消息中携带的所述信息发送标识是否已存在。

应用层在某些场景下会存在重复发送信息发送请求消息的情况,如应用层没有及时收到短信服务平台返回的短信发送完成消息,则会再次向短信服务平台发送信息发送申请消息。

短信服务平台收到应用层发送的信息发送请求消息后,使用该消息中携带的信息发送标识查询数据库。如:

信息发送标识 de8d03692a1eac4a7a1694c410387f10

步骤302、如果已存在,则进一步判断信息发送标识的状态;如果所述信息发送标识处于所述第一状态,保存所述信息发送请求消息并设置所述信息发送标识为所述第二状态;如果所述信息发送标识不处于所述第一状态,则丢弃所述信息发送请求消息。

如果存在信息发送标识,则表明该信息发送标识已申请过。然后进一步判断信息发送标识的状态,如果状态是第一状态,如初始状态,则表明该信息发送标识对应的信息还没有被发送过,需要对信息发送请求消息进行处理,把信息发送请求消息保存到消息队列中,后续短信服务平台从队列中取出该消息进行短信发送。同时把信息发送标识的状态设置为第二状态,如待发送状态,表示短信服务平台已对该信息发送标识对应的信息发送请求消息进行了处理。

如果信息发送标识对应的状态不是第一状态(如初始状态),则表示短信服务平台已对该信息发送标识对应的信息发送请求消息进行了处理,不需要再次对该消息进行处理,直接丢弃该消息。

步骤303、如果不存在,则丢弃所述信息发送请求消息。

如果信息发送请求消息中携带的信息发送标识在短信服务平台的数据库中无法查询到,则表明该信息发送标识是无效的,及应用层没有从短信服务平台申请该信息发送标识或该信息发送标识的有效时长已过期。

短信服务平台对无效的信息发送标识对应的信息发送请求消息不处理,直接丢弃该消息。

在本实施例中,短信服务平台通过查询发送请求消息中携带的信息发送标识是否存在并判断状态,防止应用层重复发送信息发送请求消息。从而减少了短信服务平台处理的消息,提升了短信服务平台的处理能力。

此外,本发明实施例还提出一种防止信息重复发送装置,参照图6,所述防止信息重复发送装置包括:

创建单元,用于接收申请信息发送标识消息,所述申请信息发送标识消息包括业务类型、接收方手机号码;根据所述业务类型、所述接收方手机号码生成信息发送标识并返回所述信息发送标识,设置所述信息发送标识为第一状态;

接收单元,用于接收信息发送请求消息,所述信息发送请求消息包括所述信息发送标识、所述接收方手机号码和信息,设置所述信息发送标识为第二状态;

发送单元,用于对所述信息发送标识增加分布式锁;如果增加所述分布式锁成功且所述信息发送标识处于所述第二状态,则发送所述信息给所述接收方手机号码;如果增加所述分布式锁失败或所述信息发送标识不处于所述第二状态,则不发送所述信息给所述接收方手机号码。

本实施例通过对信息发送分配唯一信息发送标识并对信息发送标识进行分布式锁,解决了业务层重复调用短信服务平台提供的短信发送接口导致重复发送相同短信给用户的问题,减少了短信发送费用、避免用户收到多个相同的短信,从而提高了用户体验。

需要说明的是,上述装置中的各单元可用于实现上述方法中的各个步骤,同时达到相应的技术效果,本实施例在此不再赘述。

参照图7,图7为本发明实施例提供的一种电子设备的结构示意图。

如图7所示,该电子设备可以包括:处理器1001,例如CPU,通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI、4G、5G接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。

本领域技术人员可以理解,图7中示出的结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

如图7所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及防止信息重复发送程序。

在图7所示的电子设备中,网络接口1004主要用于与外部网络进行数据通信;用户接口1003主要用于接收用户的输入指令;电子设备通过处理器1001调用存储器1005中存储的防止信息重复发送程序,并执行以下操作:

接收申请信息发送标识消息,所述申请信息发送标识消息包括业务类型、接收方手机号码;根据所述业务类型、所述接收方手机号码生成信息发送标识并返回所述信息发送标识,设置所述信息发送标识为第一状态;

接收信息发送请求消息,所述信息发送请求消息包括所述信息发送标识、所述接收方手机号码和信息,设置所述信息发送标识为第二状态;

对所述信息发送标识增加分布式锁;如果增加所述分布式锁成功且所述信息发送标识处于所述第二状态,则发送所述信息给所述接收方手机号码;如果增加所述分布式锁失败或所述信息发送标识不处于所述第二状态,则不发送所述信息给所述接收方手机号码。

可选地,所述信息发送标识通过以下步骤生成:

为所述接收方手机号码和所述业务类型分配一个标识,所述标识作为所述信息发送标识;

保存所述接收方手机号码、所述业务类型与所述信息发送标识的对应关系。

可选地,所述接收申请信息发送标识消息后,还包括以下步骤:

根据所述业务类型、所述接收方手机号码判断是否存在对应的所述信息发送标识;

如果存在所述信息发送标识,则进一步判断所述信息发送标识的状态;如果所述信息发送标识处于所述第一状态,则返回所述信息发送标识;如果所述信息发送标识不处于所述第一状态,则不返回所述信息发送标识;

如果不存在所述信息发送标识,则根据所述业务类型、所述接收方手机号码生成所述信息发送标识并返回所述信息发送标识,设置所述信息发送标识为第一状态。

可选地,所述接收信息发送请求消息后,还包括以下步骤:

判断所述信息发送请求消息中携带的所述信息发送标识是否已存在;

如果已存在,则进一步判断信息发送标识的状态;如果所述信息发送标识处于所述第一状态,保存所述信息发送请求消息并设置所述信息发送标识为所述第二状态;如果所述信息发送标识不处于所述第一状态,则丢弃所述信息发送请求消息;

如果不存在,则丢弃所述信息发送请求消息。

可选地,所述方法还包括以下步骤:

调用短信服务商提供的短信发送接口发送所述信息成功后,设置所述信息发送标识为第三状态。

可选地,所述方法还包括以下步骤:

根据所述业务类型为所述信息发送标识设置有效时长;

所述有效时长到期后删除所述信息发送标识。

可选地,所述对所述信息发送标识增加分布式锁,包括以下步骤:

使用Redis数据库的setnx命令把所述信息发送标识存储到所述Redis数据库中;

如果存储成功,表示增加所述分布式锁成功;如果存储失败,表示增加所述分布式锁失败。

本实施例通过对信息发送分配唯一信息发送标识并对信息发送标识进行分布式锁,解决了业务层重复调用短信服务平台提供的短信发送接口导致重复发送相同短信给用户的问题,减少了短信发送费用、避免用户收到多个相同的短信,从而提高了用户体验。

此外,本发明实施例还提出一种计算机可读存储介质,计算机可读存储介质上存储有防止信息重复发送程序,防止信息重复发送程序被处理器执行时实现如下操作:

接收申请信息发送标识消息,所述申请信息发送标识消息包括业务类型、接收方手机号码;根据所述业务类型、所述接收方手机号码生成信息发送标识并返回所述信息发送标识,设置所述信息发送标识为第一状态;

接收信息发送请求消息,所述信息发送请求消息包括所述信息发送标识、所述接收方手机号码和信息,设置所述信息发送标识为第二状态;

对所述信息发送标识增加分布式锁;如果增加所述分布式锁成功且所述信息发送标识处于所述第二状态,则发送所述信息给所述接收方手机号码;如果增加所述分布式锁失败或所述信息发送标识不处于所述第二状态,则不发送所述信息给所述接收方手机号码。

可选地,所述信息发送标识通过以下步骤生成:

为所述接收方手机号码和所述业务类型分配一个标识,所述标识作为所述信息发送标识;

保存所述接收方手机号码、所述业务类型与所述信息发送标识的对应关系。

可选地,所述接收申请信息发送标识消息后,还包括以下步骤:

根据所述业务类型、所述接收方手机号码判断是否存在对应的所述信息发送标识;

如果存在所述信息发送标识,则进一步判断所述信息发送标识的状态;如果所述信息发送标识处于所述第一状态,则返回所述信息发送标识;如果所述信息发送标识不处于所述第一状态,则不返回所述信息发送标识;

如果不存在所述信息发送标识,则根据所述业务类型、所述接收方手机号码生成所述信息发送标识并返回所述信息发送标识,设置所述信息发送标识为第一状态。

可选地,所述接收信息发送请求消息后,还包括以下步骤:

判断所述信息发送请求消息中携带的所述信息发送标识是否已存在;

如果已存在,则进一步判断信息发送标识的状态;如果所述信息发送标识处于所述第一状态,保存所述信息发送请求消息并设置所述信息发送标识为所述第二状态;如果所述信息发送标识不处于所述第一状态,则丢弃所述信息发送请求消息;

如果不存在,则丢弃所述信息发送请求消息。

可选地,所述方法还包括以下步骤:

调用短信服务商提供的短信发送接口发送所述信息成功后,设置所述信息发送标识为第三状态。

可选地,所述方法还包括以下步骤:

根据所述业务类型为所述信息发送标识设置有效时长;

所述有效时长到期后删除所述信息发送标识。

可选地,所述对所述信息发送标识增加分布式锁,包括以下步骤:

使用Redis数据库的setnx命令把所述信息发送标识存储到所述Redis数据库中;

如果存储成功,表示增加所述分布式锁成功;如果存储失败,表示增加所述分布式锁失败。

本实施例通过对信息发送分配唯一信息发送标识并对信息发送标识进行分布式锁,解决了业务层重复调用短信服务平台提供的短信发送接口导致重复发送相同短信给用户的问题,减少了短信发送费用、避免用户收到多个相同的短信,从而提高了用户体验。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,控制器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

19页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种短信通道分发方法、装置和系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类