CN110139229B - 延时发送短信的方法、装置、计算机设备和存储介质 - Google Patents
延时发送短信的方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN110139229B CN110139229B CN201910301101.5A CN201910301101A CN110139229B CN 110139229 B CN110139229 B CN 110139229B CN 201910301101 A CN201910301101 A CN 201910301101A CN 110139229 B CN110139229 B CN 110139229B
- Authority
- CN
- China
- Prior art keywords
- task
- sending
- short message
- queue
- delay
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W28/00—Network traffic management; Network resource management
- H04W28/02—Traffic management, e.g. flow control or congestion control
- H04W28/10—Flow control between communication endpoints
- H04W28/14—Flow control between communication endpoints using intermediate storage
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/12—Messaging; Mailboxes; Announcements
- H04W4/14—Short messaging services, e.g. short message services [SMS] or unstructured supplementary service data [USSD]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
- Telephonic Communication Services (AREA)
Abstract
本发明提出的基于消息队列技术的延时发送短信的方法、装置、计算机设备和存储介质,其中方法包括:监听预设的第一队列中是否已存入发送任务的任务ID,若第一队列中已存入任务ID,则从第一队列中获取任务ID并依据任务ID获取发送任务;依据发送任务判断目标短信是否需要延时发送;若需要,将任务ID存入预设的第二队列,并依据任务ID从发送任务中获取延时时刻,判断当前时刻是否已到延时时刻;若已到延时时刻,则将任务ID存入预设的第三队列以等候发送;若发送动作轮序到任务ID,从第三队列中获取任务ID,并依据任务ID获取发送任务;依据发送任务生成目标短信,并将目标短信发送给指定用户,通过引入队列和缓存来减轻系统压力,增强系统的稳定性。
Description
技术领域
本发明涉及数据存储的消息队列技术领域,特别是涉及到一种延时发送短信的方法、装置、计算机设备和存储介质。
背景技术
随着科技发展,短信已为人们广泛应用的通信方式,而延时短信、定时短信经常会应用于活动营销等场景,但是现有的延时发送短信方法,不但效率慢且不稳定,例如采用数据库存放发送任务,然后通过处理程序轮询发送数据,并判断是否已到处理时间点,采用这种方式一旦任务量大,数据库压力会比较大,轻则影响发送效率,重则可能会造成系统不稳定从而影响系统使用。
发明内容
本发明的主要目的为提供一种延时发送短信的方法、装置、计算机设备和存储介质,旨在解决现有延时发送短信的系统不够稳定的技术问题。
本发明提出一种延时发送短信的方法,包括:
监听预设的第一队列中是否已存入发送任务的任务ID,所述发送任务为预设的用于发送目标短信的任务;
若所述第一队列中已存入所述任务ID,则从所述第一队列中获取所述任务ID,并依据所述任务ID从预设的指定位置获取所述发送任务;
依据所述发送任务判断所述目标短信是否需要延时发送;
若需要延时,则将所述任务ID存入预设的第二队列,并依据所述任务ID从所述发送任务中获取延时时刻,判断当前时刻是否已到所述延时时刻;
若判断已到所述延时时刻,则将所述任务ID存入预设的第三队列以等候发送;
若发送动作轮序到所述任务ID,则从所述第三队列中获取所述任务ID,并依据所述任务ID从所述指定位置中获取所述发送任务;
依据所述发送任务生成目标短信,并将所述目标短信发送给指定用户。
进一步地,所述监听预设的第一队列中是否已存入发送任务的任务ID的步骤之前,包括:
依据预设的配置参数生成所述发送任务,所述配置参数包括任务名称、短信模板、目标短信的短信参数、所述任务ID、所述指定用户的手机号码以及短信发送类型,所述短信发送类型包括延时以及不延时,当所述短信发送类型为延时,所述发送任务还包括延时时刻;
将所述发送任务以预设格式存放至所述指定位置。
进一步地,所述依据所述发送任务生成目标短信的步骤,包括:
获取所述发送任务中的短信模板以及目标短信的短信参数;
将所述短信参数解析得到短信内容;
将所述短信模板中的变量替换成所述短信内容,以形成所述目标短信所述变量为在所述短信模板中用于替换成所述短信内容的指定字符。
进一步地,所述依据所述发送任务判断所述目标短信是否需要延时发送的步骤之后,包括:
若判定所述目标短信不需要延时发送,则直接将所述任务ID存入所述第三队列;
若发送动作轮序到所述任务ID,则从所述第三队列中获取所述任务ID,并依据所述任务ID从所述指定位置中获取所述发送任务;
依据所述发送任务生成目标短信,并将所述目标短信发送给指定用户。
进一步地,所述若发送动作轮序到所述任务ID,则依据所述任务ID从所述指定位置中获取所述发送任务的步骤,包括:
判断所述任务ID是否为当前轮序到的ID;
若所述任务ID为按存入所述第三队列的时间顺序当前轮序到的ID,则从所述第三队列中获取所述任务ID,并依据所述任务ID从所述指定位置中获取所述发送任务。
进一步地,所述第二队列为延迟消息队列,所述依据所述任务ID从所述发送任务中获取延时时刻,判断当前时刻是否已到所述延时时刻的步骤,包括:
通过所述延迟消息队列检测所述发送任务中的延时时刻;
若所述延时时刻为当前时刻,则依据所述延迟消息队列发出的延时时刻已到的通知,发出用于发送所述目标短信的指令。
本发明还提供一种延时发送短信的装置,包括:
监听任务单元,用于监听预设的第一队列中是否已存入发送任务的任务ID,所述发送任务为预设的用于发送目标短信的任务;
获取任务单元,用于若所述第一队列中已存入所述任务ID,则从所述第一队列中获取所述任务ID,并依据所述任务ID从预设的指定位置获取所述发送任务;
判断延时单元,用于依据所述发送任务判断所述目标短信是否需要延时发送;
存入任务单元,用于需要延时,则将所述任务ID存入预设的第二队列,并依据所述任务ID从所述发送任务中获取延时时刻,判断当前时刻是否已到所述延时时刻;
等候发送单元,用于判断已到所述延时时刻,则将所述任务ID存入预设的第三队列以等候发送;
轮序任务单元,用于发送动作轮序到所述任务ID,则从所述第三队列中获取所述任务ID,并依据所述任务ID从所述指定位置中获取所述发送任务;
生成短信单元,用于依据所述发送任务生成目标短信,并将所述目标短信发送给指定用户。
进一步地,还包括:
配置参数单元,用于依据预设的配置参数生成所述发送任务,所述配置参数包括任务名称、短信模板、目标短信的短信参数、所述任务ID、所述指定用户的手机号码以及短信发送类型,所述短信发送类型包括延时以及不延时,当所述短信发送类型为延时,所述发送任务还包括延时时刻;
存储任务单元,用于将所述发送任务以预设格式存放至所述指定位置。
本发明还提供一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。
本发明的有益效果为:通过引入三个不同队列,一个用于等待解析发送任务,查询短信是否需要延时,当需要延时的时候,通过第二队列等待发送时刻,当判断到达发送时刻,则通过第三个队列排队进行发送;这样通过引入队列和缓存来减轻系统压力,增强系统的稳定性,且能够提高处理速度以及发送效率。
附图说明
图1为本发明一实施例中延时发送短信的方法的步骤示意图;
图2为本发明一实施例中延时发送短信的装置的结构示意框图;
图3为本发明一实施例的计算机设备的结构示意框图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参照图1,本实施例中的延时发送短信的方法,包括:
步骤S1:监听预设的第一队列中是否已存入发送任务的任务ID,所述发送任务为预设的用于发送目标短信的任务;
步骤S2:若所述第一队列中已存入所述任务ID,则从所述第一队列中获取所述任务ID,并依据所述任务ID从预设的指定位置获取所述发送任务;
步骤S3:依据所述发送任务判断所述目标短信是否需要延时发送;
步骤S4:若需要延时,则将所述任务ID存入预设的第二队列,并依据所述任务ID从所述发送任务中获取延时时刻,判断当前时刻是否已到所述任务ID对应的延时时刻;
步骤S5:若判断已到所述延时时刻,则将所述任务ID存入预设的第三队列以等候发送;
步骤S6:若发送动作轮序到所述任务ID,则从所述第三队列中获取所述任务ID,并依据所述任务ID从所述指定位置中获取所述发送任务;
步骤S7:依据所述发送任务生成目标短信,并将所述目标短信发送给指定用户。
本实施例中,上述延时短信发送的方法基于短信发送系统实现,短信发送系统运行过程中通过不同的程序合作完成,其中,这些程序包括任务处理程序、发送短信程序等,如上述步骤S1及步骤S2所述,任务处理程序持续监听第一队列(queue,队列是一种运算受限的线性表,通常在表的一端(队首)进行插入,在表的另一端(队尾)进行删除),当在第一队列中存入发送任务的任务ID时,任务处理程序会监听到第一队列有新数据进入,即监听到了目标短信的任务ID已存入了第一队列,这时系统会从第一队列中获取任务ID,从而依据任务ID从指定位置中获取对应该任务ID的发送任务。
需要注意的是,在上述步骤S1之前,上述发送任务已被预先设置,该发送任务为用于发送短信的任务,具体包括:
步骤S01:依据预设的配置参数生成所述发送任务,所述配置参数包括任务名称、短信模板、目标短信的短信参数、所述任务ID、所述指定用户的手机号码以及短信发送类型,所述短信发送类型包括延时以及不延时,当所述短信发送类型为延时,所述发送任务还包括延时时刻;
步骤S02:将所述发送任务以预设格式存放至所述指定位置。
如上述步骤S01所述,在发送短信之前,需要依据预设的配置参数来生成目标短信的发送任务,预设的配置参数可由用户输入设置,其中配置参数包括任务名称、任务ID、短信模板、目标短信的短信参数、指定用户的手机号码、短信发送的类型(延时或不延时)等,若短信发送类型为延时,发送任务还包括延时时刻,短信发送系统根据这些配置参数生成一个发送任务,并将这个发送任务以预设格式存储在预设的指定位置,即将该发送任务缓存于指定位置。
举例地,将该发送任务以json格式存放在任务池,上述任务池基于存储系统实现,相当于一个预设的用于存放短信发送任务信息的地方,该任务池即为上述的指定位置。json格式是一种用于数据交互的格式,其表达形式为<key,value>,其中key是任务ID,value具体的任务数据(包括上述任务名称、短信模板、目标短信的短信参数、任务ID、手机号码、短信发送类型以及延时时刻),这里将发送任务采用json格式存储在任务池更加便于管理以及运行使用。
如上述步骤S3-S5所述,由于发送任务中包括有短信发送类型(延时或不延时)的信息,即通过发送任务知道目标短信是否需要延时发送,当判断到需要延时发送时,短信发送系统将任务ID存入第二队列,然后依据任务从发送任务中取出延时时刻,并判断当前时刻是否已到延时时刻,在一个实施例,上述判断当前时刻是否已到延时时刻的步骤如下,即步骤S3包括:
步骤S31:每隔一秒从所述第二队列中获取一次所述任务ID,并依据所述任务ID从所述发送任务中获取所述延时时刻;
步骤S32:将所述当前时刻与所述延时时刻对比,以判断所述当前时刻是否已到所述延时时刻。
本实施例中,避免出错,任务处理程序每隔一秒从第二队列中获取一次任务ID,同时依据任务ID从发送任务中获取延时时刻,然后将延时时刻与当前时刻对比,判断当前时刻是否已到延时时刻(即需要将短信发送出去的时刻)。若延时时刻为当前时刻,即说明短信发送时刻到了,这时将任务ID存入第三队列,若延时时刻还没到达当前时刻,即结束当前对第二队列的取出任务,等待下次取出。
在一个实施例中,为了减少运算量,可将任务ID以及延时时刻同时存入第二队列,任务处理程序会每隔一秒将任务ID及延时时刻从第二队列中取出一次,这时可直接将延时时刻与当前时刻对比,从而判断是否已到目标短信的延时时刻。
在一个实施例中,第二队列为一个有序队列,在第二队列中,所有存入第二队列的ID均按延时时刻的先后顺序排序,按时刻在前的优选查询判断,如第一个ID对应的延时时刻为11:30,但是第二个存入的ID对应的延时时刻为11:00,而当前时刻为10:00,则每隔一秒从第二队列中取出来判断的为第二个存入的ID。
在另一个实施例中,还可以通过采用已知的带有检测功能的队列来判断当前时刻是否已到延时时刻,具体步骤包括:
步骤S33:通过所述延迟消息队列检测所述发送任务中的延时时刻;
步骤S34:若所述延时时刻为当前时刻,则依据所述延迟消息队列发出的延时时刻已到的通知,发出用于发送所述目标短信的指令。
如上述步骤S33-S34所述,上述第二队列为延迟消息队列(现有技术中一种带有延时功能的消息队列),该延迟消息队列可自动检测队列里任务ID对应的延时时刻,当检测到延时时刻为当前时刻,则将该延时时刻到了的通知发出,任务处理程序接收到该通知信息后,从延迟消息队列里取出对应延时时刻的任务ID,并存入到第三队列中。
如上述步骤S6和S7所述,当将任务ID存入第三队列,即表明可以即时将目标短信发送出去,这时系统会按照时间先后将第三队列中的每个对应的短信发送出去,当轮序到上述任务ID,则上述发送短信程序会从第三队列中获取任务ID,根据任务ID在上述指定位置获取对应的发送任务,然后根据发送任务的信息,如短信模板、目标短信的短信参数等,将其解析得到目标短信,然后将目标短信发送到指定用户的手机中。
在一个实施例中,上述步骤S7,包括:
步骤S71:获取所述发送任务中的短信模板以及目标短信的短信参数;
步骤S72:将所述短信参数解析得到短信内容;
步骤S73:将所述短信模板中的变量替换成所述短信内容,以形成所述目标短信,所述变量为在所述短信模板中用于替换成所述短信内容的指定字符。
本实施例中,当依据发送任务生成目标短信的过程包括从任务池中获取发送任务中的具体任务数据,其中,包括短信模板和目标短信的短信参数,首先将短信参数解析得到目标短信的内容,然后将短信模板中的变量替换成短信内容,从而生成目标短信,其中,变量为在短信模板中用于替换成短信内容的指定字符,一般设置在指定的位置,例如,短信模板为“尊敬的a”,其中短信模板的变量为a,将目标短信的短信参数解析得到张三,则将变量a替换成张三,如“尊敬的张三”。
在一个实施例中,上述步骤S3之后,还包括:
步骤S31:若判定所述目标短信不需要延时发送,则直接将所述任务ID存入所述第三队列;
步骤S32:若发送动作轮序到所述任务ID,则依据所述任务ID从所述指定位置中获取所述发送任务;
步骤S33:依据所述发送任务生成目标短信,并将所述目标短信发送给指定用户。
已知的是,在预设目标短信的配置参数时,可根据实际情况设置为延时或者不延时,当用户设置的为不延时的时候,这时,短信发送系统在步骤S3判断出目标短信不需要延时发送,然后直接将任务ID存入第三队列,发送短信程序会监听到任务ID的存入动作,然后开始进入发送短信工作,先从第三队列C中取出任务ID,然后依据任务ID从指定位置获取发送任务,通过发送任务生成目标短信,然后发送到指定手机号码,这一过程与上述步骤S6-S7一致,这里不再赘述。
在一个实施例中,上述步骤S6,包括:
步骤S61:判断所述任务ID是否为按存入所述第三队列的时间顺序当前轮序到的ID;
步骤S62:若所述任务ID为当前轮序到的ID,则从所述第三队列中获取所述任务ID,并依据所述任务ID从所述指定位置中获取所述发送任务。
本实施例中,发送短信程序持续监听第三队列,当将任务ID存入第三队列,发送短信程序会监听到第三队列中增加了任务ID,然后判断该任务ID是否当前轮序到的ID,由于当存入第三队列C中的ID数量过多,时间比较密集时,则发送任务需要依先后顺序来处理,按存入的时刻先后来排序,即按存入第三队列的时间顺序来轮序,轮序到了才从第三队列获取任务ID,以获取任务并执行发送任务,当判断到任务ID是轮序到当前处理的ID,那么从第三队列C获取任务ID,依据任务ID从指定位置获取发送任务,然后按照步骤S7生成目标短信,并发送给指定用户。
综上所述,本发明提供的延时发送短信的方法,通过引入三个不同队列,一个用于等待解析发送任务,查询短信是否需要延时,当需要延时的时候,通过第二队列等待发送时刻,当判断到达发送时刻,则通过第三个队列排队进行发送;这样通过引入队列和缓存来减轻系统压力,大大地增强系统的稳定性,且能够提高系统处理速度以及发送效率。
参照图2,本实施例中延时发送短信的装置,包括:
监听任务单元100,用于监听预设的第一队列中是否已存入发送任务的任务ID,所述发送任务为预设的用于发送目标短信的任务;
获取任务单元200,用于若所述第一队列中已存入所述任务ID,则从所述第一队列中获取所述任务ID,并依据所述任务ID从预设的指定位置获取所述发送任务;
判断延时单元300,用于依据所述发送任务判断所述目标短信是否需要延时发送;
存入任务单元400,用于需要延时,则将所述任务ID存入预设的第二队列,并依据所述任务ID从所述发送任务中获取延时时刻,判断当前时刻是否已到所述延时时刻;
等候发送单元500,用于判断已到所述延时时刻,则将所述任务ID存入预设的第三队列以等候发送;
轮序任务单元600,用于发送动作轮序到所述任务ID,则从所述第三队列中获取所述任务ID,并依据所述任务ID从所述指定位置中获取所述发送任务;
生成短信单元700,用于依据所述发送任务生成目标短信,并将所述目标短信发送给指定用户。
本实施例中,如上述监听任务单元100及获取任务单元200所述,监听任务单元100持续监听第一队列(queue,队列是一种运算受限的线性表,通常在表的一端(队首)进行插入,在表的另一端(队尾)进行删除),当在第一队列中存入发送任务的任务ID时,监听任务单元100会监听到第一队列有新数据进入,即监听到了目标短信的任务ID已存入了第一队列,这时获取任务单元200会从第一队列中获取任务ID,从而依据任务ID从指定位置中获取对应该任务ID的发送任务。
需要注意的是,在监听上述第一队列之前,上述发送任务已被预先设置,该发送任务为用于发送短信的任务,具体而言,上述延时发送短信的装置还包括:
配置参数单元,用于依据预设的配置参数生成所述发送任务,所述配置参数包括任务名称、短信模板、目标短信的短信参数、所述任务ID、所述指定用户的手机号码以及短信发送类型,所述短信发送类型包括延时以及不延时,当所述短信发送类型为延时,所述发送任务还包括延时时刻;
存储任务单元,用于将所述发送任务以预设格式存放至所述指定位置。
如上述配置参数单元所述,在发送短信之前,需要依据预设的配置参数来生成目标短信的发送任务,预设的配置参数可由用户输入设置,其中配置参数包括任务名称、任务ID、短信模板、目标短信的短信参数、指定用户的手机号码、短信发送的类型(延时或不延时)等,若短信发送类型为延时,发送任务还包括延时时刻,短信发送系统根据这些配置参数生成一个发送任务,并将这个发送任务以预设格式存储在预设的指定位置,即将该发送任务缓存于指定位置。
举例地,将该发送任务以json格式存放在任务池,上述任务池基于存储系统实现,相当于一个预设的用于存放短信发送任务信息的地方,该任务池即为上述的指定位置。json格式是一种用于数据交互的格式,其表达形式为<key,value>,其中key是任务ID,value具体的任务数据(包括上述任务名称、短信模板、目标短信的短信参数、任务ID、手机号码、短信发送类型以及延时时刻),这里将发送任务采用json格式存储在任务池更加便于管理以及运行使用。
如上述判断延时单元300、存入任务单元400以及等候发送单元500所述,由于发送任务中包括有短信发送类型(延时或不延时)的信息,即通过发送任务知道目标短信是否需要延时发送,当判断到需要延时发送时,短信发送系统将任务ID存入第二队列,然后依据任务从发送任务中取出延时时刻,并判断当前时刻是否已到延时时刻。
在一个实施例,判断延时单元300包括:
获取任务子单元,用于每隔一秒从所述第二队列中获取一次所述任务ID,并依据所述任务ID从所述发送任务中获取所述延时时刻;
对比时刻子单元,用于将所述当前时刻与所述延时时刻对比,以判断所述当前时刻是否已到所述延时时刻。
本实施例中,避免出错,获取任务子单元每隔一秒从第二队列中获取一次任务ID,同时依据任务ID从发送任务中获取延时时刻,然后将延时时刻与当前时刻对比,判断当前时刻是否已到延时时刻(即需要将短信发送出去的时刻)。若延时时刻为当前时刻,即说明短信发送时刻到了,这时将任务ID存入第三队列,若延时时刻还没到达当前时刻,即结束当前对第二队列的取出任务,等待下次取出。
在一个实施例中,为了减少运算量,可将任务ID以及延时时刻同时存入第二队列,获取任务子单元会每隔一秒将任务ID及延时时刻从第二队列中取出一次,这时可直接将延时时刻与当前时刻对比,从而判断是否已到目标短信的延时时刻。
在一个实施例中,第二队列为一个有序队列,在第二队列中,所有存入第二队列的ID均按延时时刻的先后顺序排序,按时刻在前的优选查询判断,如第一个ID对应的延时时刻为11:30,但是第二个存入的ID对应的延时时刻为11:00,而当前时刻为10:00,则每隔一秒从第二队列中取出来判断的为第二个存入的ID。
在另一个实施例中,还可以通过采用已知的带有检测功能的队列来判断当前时刻是否已到延时时刻,具体的说,上述延时发送短信的装置包括:
检测时刻单元,用于通过所述延迟消息队列检测所述发送任务中的延时时刻;
发出指令单元,用于所述延时时刻为当前时刻,则依据所述延迟消息队列发出的延时时刻已到的通知,发出用于发送所述目标短信的指令。
如上述检测时刻单元以及发出指令单元所述,上述第二队列为延迟消息队列(现有技术中一种带有延时功能的消息队列),该延迟消息队列可自动检测队列里任务ID对应的延时时刻,当检测到延时时刻为当前时刻,则将该延时时刻到了的通知发出,接收到该通知信息后,从延迟消息队列里取出对应延时时刻的任务ID,并存入到第三队列中。
如上述轮序任务单元600和生成短信单元700所述,当将任务ID存入第三队列,即表明可以即时将目标短信发送出去,这时系统会按照时间先后将第三队列中的每个对应的短信发送出去,当轮序到上述任务ID,则会从第三队列中获取任务ID,根据任务ID在上述指定位置获取对应的发送任务,然后根据发送任务的信息,如短信模板、目标短信的短信参数等,将其解析得到目标短信,然后将目标短信发送到指定用户的手机中。
在一个实施例中,上述生成短信单元700,包括:
获取模板子单元,用于获取所述发送任务中的短信模板以及目标短信的短信参数;
解析参数子单元,用于将所述短信参数解析得到短信内容;
替换内容子单元,用于将所述短信模板中的变量替换成所述短信内容,以形成所述目标短信,所述变量为在所述短信模板中用于替换成所述短信内容的指定字符。
本实施例中,当依据发送任务生成目标短信的过程包括从任务池中获取发送任务中的具体任务数据,其中,包括短信模板和目标短信的短信参数,首先将短信参数解析得到目标短信的内容,然后将短信模板中的变量替换成短信内容,从而生成目标短信,其中,变量为在短信模板中用于替换成短信内容的指定字符,一般设置在指定的位置,例如,短信模板为“尊敬的a”,其中短信模板的变量为a,将目标短信的短信参数解析得到张三,则将变量a替换成张三,如“尊敬的张三”。
在一个实施例中,上述延时发送短信的装置还包括:
存入队列单元,用于判定所述目标短信不需要延时发送,则直接将所述任务ID存入所述第三队列;
第二轮序单元,用于发送动作轮序到所述任务ID时,则从所述第三队列中获取所述任务ID,并依据所述任务ID从所述指定位置中获取所述发送任务;
发生短信单元,用于依据所述发送任务生成目标短信,并将所述目标短信发送给指定用户。
已知的是,在预设目标短信的配置参数时,可根据实际情况设置为延时或者不延时,当用户设置的为不延时的时候,这时,短信发送系统在判断出目标短信不需要延时发送,然后直接将任务ID存入第三队列,当监听到任务ID的存入动作,然后开始进入发送短信工作,先从第三队列C中取出任务ID,然后依据任务ID从指定位置获取发送任务,通过发送任务生成目标短信,然后发送到指定手机号码。
在一个实施例中,上述轮序任务单元600,包括:
监听存入子单元,用于判断所述任务ID是否为按存入所述第三队列的时间顺序当前轮序到的ID;
轮序获取单元,用于所述任务ID为当前轮序到的ID时,则从所述第三队列中获取所述任务ID,并依据所述任务ID从所述指定位置中获取所述发送任务。
本实施例中,监听存入子单元持续监听第三队列,当将任务ID存入第三队列,监听存入子单元会监听到第三队列中增加了任务ID,然后判断该任务ID是否当前轮序到的ID,由于当存入第三队列C中的ID数量过多,时间比较密集时,则发送任务需要依先后顺序来处理,按存入的时刻先后来排序,即按存入第三队列的时间顺序来轮序,轮序到了才从第三队列获取任务ID,以获取任务并执行发送任务,当判断到任务ID是轮序到当前处理的ID,那么从第三队列C获取任务ID,依据任务ID从指定位置获取发送任务,然后按照上述生成短信单元700生成目标短信,并发送给指定用户。
综上所述,本发明提供的延时发送短信的装置,通过引入三个不同队列,一个用于等待解析发送任务,查询短信是否需要延时,当需要延时的时候,通过第二队列等待发送时刻,当判断到达发送时刻,则通过第三个队列排队进行发送;这样通过引入队列和缓存来减轻系统压力,大大地增强系统的稳定性,且能够提高系统处理速度以及发送效率。
参照图3,本发明实施例中还提供一种计算机设备,该计算机设备可以是服务器,其内部结构可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设计的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储延时发送短信所需的所有数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种延时发送短信的方法。
上述处理器执行上述延时发送短信的方法的步骤:监听预设的第一队列中是否已存入发送任务的任务ID,所述发送任务为预设的用于发送目标短信的任务;若所述第一队列中已存入所述任务ID,则从所述第一队列中获取所述任务ID,并依据所述任务ID从预设的指定位置获取所述发送任务;依据所述发送任务判断所述目标短信是否需要延时发送;若需要延时,则将所述任务ID存入预设的第二队列,并依据所述任务ID从所述发送任务中获取延时时刻,判断当前时刻是否已到所述延时时刻;若判断已到所述延时时刻,则将所述任务ID存入预设的第三队列以等候发送;若发送动作轮序到所述任务ID,则从所述第三队列中获取所述任务ID,并依据所述任务ID从所述指定位置中获取所述发送任务;依据所述发送任务生成目标短信,并将所述目标短信发送给指定用户。
上述计算机设备,上述监听预设的第一队列中是否已存入发送任务的任务ID的步骤之前,包括:依据预设的配置参数生成所述发送任务,所述配置参数包括任务名称、短信模板、目标短信的短信参数、所述任务ID、所述指定用户的手机号码以及短信发送类型,所述短信发送类型包括延时以及不延时,当所述短信发送类型为延时,所述发送任务还包括延时时刻;将所述发送任务以预设格式存放至所述指定位置。
在一个实施例中,上述依据所述发送任务生成目标短信的步骤,包括:获取所述发送任务中的短信模板以及目标短信的短信参数;将所述短信参数解析得到短信内容;将所述短信模板中的变量替换成所述短信内容,以形成所述目标短信,所述变量为在所述短信模板中用于替换成所述短信内容的指定字符。
在一个实施例中,上述依据所述发送任务判断所述目标短信是否需要延时发送的步骤之后,包括:若判定所述目标短信不需要延时发送,则直接将所述任务ID存入所述第三队列;若发送动作轮序到所述任务ID,则依据所述任务ID从所述指定位置中获取所述发送任务;依据所述发送任务生成目标短信,并将所述目标短信发送给指定用户。
在一个实施例中,上述若发送动作轮序到所述任务ID,则从所述第三队列中获取所述任务ID,并依据所述任务ID从所述指定位置中获取所述发送任务的步骤,包括:判断所述任务ID是否为按存入所述第三队列的时间顺序当前轮序到的ID;若所述任务ID为当前轮序到的ID,则从所述第三队列中获取所述任务ID,并依据所述任务ID从所述指定位置中获取所述发送任务。
在一个实施例中,上述第二队列为延迟消息队列,所述依据所述任务ID从所述发送任务中获取延时时刻,判断当前时刻是否已到所述延时时刻的步骤,包括:通过所述延迟消息队列检测所述发送任务中的延时时刻;若所述延时时刻为当前时刻,则依据所述延迟消息队列发出的延时时刻已到的通知,发出用于发送所述目标短信的指令。
本领域技术人员可以理解,图3中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定。
本发明一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现一种延时发送短信的方法,具体为:监听预设的第一队列中是否已存入发送任务的任务ID,所述发送任务为预设的用于发送目标短信的任务;若所述第一队列中已存入所述任务ID,则从所述第一队列中获取所述任务ID,并依据所述任务ID从预设的指定位置获取所述发送任务;依据所述发送任务判断所述目标短信是否需要延时发送;若需要延时,则将所述任务ID存入预设的第二队列,并依据所述任务ID从所述发送任务中获取延时时刻,判断当前时刻是否已到所述延时时刻;若判断已到所述延时时刻,则将所述任务ID存入预设的第三队列以等候发送;若发送动作轮序到所述任务ID,则从所述第三队列中获取所述任务ID,并依据所述任务ID从所述指定位置中获取所述发送任务;依据所述发送任务生成目标短信,并将所述目标短信发送给指定用户。
上述计算机可读存储介质,上述监听预设的第一队列中是否已存入发送任务的任务ID的步骤之前,包括:依据预设的配置参数生成所述发送任务,所述配置参数包括任务名称、短信模板、目标短信的短信参数、所述任务ID、所述指定用户的手机号码以及短信发送类型,所述短信发送类型包括延时以及不延时,当所述短信发送类型为延时,所述发送任务还包括延时时刻;将所述发送任务以预设格式存放至所述指定位置。
在一个实施例中,上述依据所述发送任务生成目标短信的步骤,包括:获取所述发送任务中的短信模板以及目标短信的短信参数;将所述短信参数解析得到短信内容;将所述短信模板中的变量替换成所述短信内容,以形成所述目标短信,所述变量为在所述短信模板中用于替换成所述短信内容的指定字符。
在一个实施例中,上述依据所述发送任务判断所述目标短信是否需要延时发送的步骤之后,包括:若判定所述目标短信不需要延时发送,则直接将所述任务ID存入所述第三队列;若发送动作轮序到所述任务ID,则依据所述任务ID从所述指定位置中获取所述发送任务;依据所述发送任务生成目标短信,并将所述目标短信发送给指定用户。
在一个实施例中,上述若发送动作轮序到所述任务ID,则从所述第三队列中获取所述任务ID,并依据所述任务ID从所述指定位置中获取所述发送任务的步骤,包括:监判断所述任务ID是否为按存入所述第三队列的时间顺序当前轮序到的ID;若所述任务ID为当前轮序到的ID,则从所述第三队列中获取所述任务ID,并依据所述任务ID从所述指定位置中获取所述发送任务。
在一个实施例中,上述第二队列为延迟消息队列,所述依据所述任务ID从所述发送任务中获取延时时刻,判断当前时刻是否已到所述延时时刻的步骤,包括:通过所述延迟消息队列检测所述发送任务中的延时时刻;若所述延时时刻为当前时刻,则依据所述延迟消息队列发出的延时时刻已到的通知,发出用于发送所述目标短信的指令。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储与一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的和实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM一多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双速据率SDRAM(SSRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种延时发送短信的方法,其特征在于,包括:
监听预设的第一队列中是否已存入发送任务的任务ID,所述发送任务为预设的用于发送目标短信的任务;
若所述第一队列中已存入所述任务ID,则从所述第一队列中获取所述任务ID,并依据所述任务ID从预设的指定位置获取所述发送任务;
依据所述发送任务判断所述目标短信是否需要延时发送;
若需要延时,则将所述任务ID存入预设的第二队列,并依据所述任务ID从所述发送任务中获取延时时刻,判断当前时刻是否已到所述延时时刻;
若判断已到所述延时时刻,则将所述任务ID存入预设的第三队列以等候发送;
若发送动作轮序到所述任务ID,则从所述第三队列中获取所述任务ID,并依据所述任务ID从所述指定位置中获取所述发送任务;
依据所述发送任务生成目标短信,并将所述目标短信发送给指定用户;
所述第二队列为有序队列,在第二队列中,所有存入第二队列的任务ID均按延时时刻的先后顺序排序。
2.根据权利要求1所述的延时发送短信的方法,其特征在于,所述监听预设的第一队列中是否已存入发送任务的任务ID的步骤之前,包括:
依据预设的配置参数生成所述发送任务,所述配置参数包括任务名称、短信模板、目标短信的短信参数、所述任务ID、所述指定用户的手机号码以及短信发送类型,所述短信发送类型包括延时以及不延时,当所述短信发送类型为延时,所述发送任务还包括延时时刻;
将所述发送任务以预设格式存放至所述指定位置。
3.根据权利要求2所述的延时发送短信的方法,其特征在于,所述依据所述发送任务生成目标短信的步骤,包括:
获取所述发送任务中的短信模板以及目标短信的短信参数;
将所述短信参数解析得到短信内容;
将所述短信模板中的变量替换成所述短信内容,以形成所述目标短信,所述变量为在所述短信模板中用于替换成所述短信内容的指定字符。
4.根据权利要求1所述的延时发送短信的方法,其特征在于,所述依据所述发送任务判断所述目标短信是否需要延时发送的步骤之后,包括:
若判定所述目标短信不需要延时发送,则直接将所述任务ID存入所述第三队列;
若发送动作轮序到所述任务ID,则依据所述第三队列中的所述任务ID从所述指定位置中获取所述发送任务;
依据所述发送任务生成目标短信,并将所述目标短信发送给指定用户。
5.根据权利要求1所述的延时发送短信的方法,其特征在于,所述若发送动作轮序到所述任务ID,则从所述第三队列中获取所述任务ID,并依据所述任务ID从所述指定位置中获取所述发送任务的步骤,包括:
判断所述任务ID是否为按存入所述第三队列的时间顺序当前轮序到的ID;
若所述任务ID为当前轮序到的ID,则从所述第三队列中获取所述任务ID,并依据所述任务ID从所述指定位置中获取所述发送任务。
6.根据权利要求1所述的延时发送短信的方法,其特征在于,所述第二队列为延迟消息队列,所述依据所述任务ID从所述发送任务中获取延时时刻,判断当前时刻是否已到所述延时时刻的步骤,包括:
通过所述延迟消息队列检测所述发送任务中的延时时刻;
若所述延时时刻为当前时刻,则依据所述延迟消息队列发出的延时时刻已到的通知,发出用于发送所述目标短信的指令。
7.一种延时发送短信的装置,其特征在于,包括:
监听任务单元,用于监听预设的第一队列中是否已存入发送任务的任务ID,所述发送任务为预设的用于发送目标短信的任务;
获取任务单元,用于若所述第一队列中已存入所述任务ID,则从所述第一队列中获取所述任务ID,并依据所述任务ID从预设的指定位置获取所述发送任务;
判断延时单元,用于依据所述发送任务判断所述目标短信是否需要延时发送;
存入任务单元,用于需要延时,则将所述任务ID存入预设的第二队列,并依据所述任务ID从所述发送任务中获取延时时刻,判断当前时刻是否已到所述延时时刻;
等候发送单元,用于判断已到所述延时时刻,则将所述任务ID存入预设的第三队列以等候发送;
轮序任务单元,用于发送动作轮序到所述任务ID,则从所述第三队列中获取所述任务ID,并依据所述任务ID从所述指定位置中获取所述发送任务;
生成短信单元,用于依据所述发送任务生成目标短信,并将所述目标短信发送给指定用户;
所述第二队列为有序队列,在第二队列中,所有存入第二队列的任务ID均按延时时刻的先后顺序排序。
8.根据权利要求7所述的延时发送短信的装置,其特征在于,还包括:
配置参数单元,用于依据预设的配置参数生成所述发送任务,所述配置参数包括任务名称、短信模板、目标短信的短信参数、所述任务ID、所述指定用户的手机号码以及短信发送类型,所述短信发送类型包括延时以及不延时,当所述短信发送类型为延时,所述发送任务还包括延时时刻;
存储任务单元,用于将所述发送任务以预设格式存放至所述指定位置。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910301101.5A CN110139229B (zh) | 2019-04-15 | 2019-04-15 | 延时发送短信的方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910301101.5A CN110139229B (zh) | 2019-04-15 | 2019-04-15 | 延时发送短信的方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110139229A CN110139229A (zh) | 2019-08-16 |
CN110139229B true CN110139229B (zh) | 2022-03-29 |
Family
ID=67570034
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910301101.5A Active CN110139229B (zh) | 2019-04-15 | 2019-04-15 | 延时发送短信的方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110139229B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112118297B (zh) * | 2020-09-01 | 2024-03-26 | 上海东普信息科技有限公司 | 延时消息的控制方法、装置、设备及存储介质 |
CN112702259B (zh) * | 2020-12-23 | 2023-05-23 | 北京焦点新干线信息技术有限公司 | 延迟消息推送方法、装置及消息中间件 |
CN113596750A (zh) * | 2021-06-22 | 2021-11-02 | 西安震有信通科技有限公司 | 一种信息定时发送方法、装置、设备终端及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106385466A (zh) * | 2016-11-09 | 2017-02-08 | 努比亚技术有限公司 | 一种消息处理装置、方法和消息推送系统 |
CN108021439A (zh) * | 2016-10-31 | 2018-05-11 | 阿里巴巴集团控股有限公司 | 一种任务轮询方法、任务排布方法和相关装置 |
CN108415759A (zh) * | 2017-02-09 | 2018-08-17 | 阿里巴巴集团控股有限公司 | 消息的处理方法、装置和电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2406880A1 (en) * | 2002-10-04 | 2004-04-04 | Ibm Canada Limited-Ibm Canada Limitee | Method and apparatus for an ecommerce message using sms |
-
2019
- 2019-04-15 CN CN201910301101.5A patent/CN110139229B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108021439A (zh) * | 2016-10-31 | 2018-05-11 | 阿里巴巴集团控股有限公司 | 一种任务轮询方法、任务排布方法和相关装置 |
CN106385466A (zh) * | 2016-11-09 | 2017-02-08 | 努比亚技术有限公司 | 一种消息处理装置、方法和消息推送系统 |
CN108415759A (zh) * | 2017-02-09 | 2018-08-17 | 阿里巴巴集团控股有限公司 | 消息的处理方法、装置和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN110139229A (zh) | 2019-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110300050B (zh) | 消息推送方法、装置、计算机设备及存储介质 | |
CN110139229B (zh) | 延时发送短信的方法、装置、计算机设备和存储介质 | |
CN106648940B (zh) | 远程过程调用方法及装置 | |
CN107766190B (zh) | 接口测试方法、装置、计算机设备和存储介质 | |
CN109688280B (zh) | 请求处理方法、请求处理设备、浏览器及存储介质 | |
CN113938535A (zh) | 基于多协议适配的物联网设备接入方法及装置 | |
CN108512869B (zh) | 一种采用异步化方式处理并发数据的方法及系统 | |
CN110727588A (zh) | 网络应用的测试方法、系统、计算机设备和可读存储介质 | |
CN113688183A (zh) | 多类型数据源抽取方法、系统、终端设备以及存储介质 | |
CN113342503B (zh) | 实时进度反馈方法、装置、设备及存储介质 | |
US20220272171A1 (en) | Method and apparatus for subscribing to resource | |
CN111224939B (zh) | 任务请求的拦截方法、装置、计算机设备和存储介质 | |
CN107729207B (zh) | 一种应用程序主线程的监控方法及装置 | |
CN110933121A (zh) | 连接建立方法、通信处理方法、装置及通信设备 | |
CN113630418A (zh) | 一种网络服务识别方法、装置、设备及介质 | |
CN111064729B (zh) | 报文的处理方法及装置、存储介质和电子装置 | |
CN110648052B (zh) | 风控决策方法、装置、计算机设备和存储介质 | |
CN112888042A (zh) | 基于移动终端的智能手表控制方法、装置、终端及介质 | |
CN107819855A (zh) | 一种消息分发方法及装置 | |
CN111061637A (zh) | 接口测试方法、接口测试装置及存储介质 | |
CN114201701B (zh) | 运行环境的识别方法及装置、存储介质、服务端、客户端 | |
CN113141282B (zh) | 基于Libpcap的抓包方法、装置、设备及存储介质 | |
CN114553944A (zh) | 预警消息推送方法和系统 | |
CN111427698B (zh) | 基于Azakban的数据同步方法、装置和计算机设备 | |
CN111343042B (zh) | 一种dns解析的测试方法及测试系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |