CN110061902B - 一种定时发送消息的方法、装置及存储介质 - Google Patents
一种定时发送消息的方法、装置及存储介质 Download PDFInfo
- Publication number
- CN110061902B CN110061902B CN201910182484.9A CN201910182484A CN110061902B CN 110061902 B CN110061902 B CN 110061902B CN 201910182484 A CN201910182484 A CN 201910182484A CN 110061902 B CN110061902 B CN 110061902B
- Authority
- CN
- China
- Prior art keywords
- timing
- message
- hash
- messages
- sending
- 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
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/21—Monitoring or handling of messages
- H04L51/214—Monitoring or handling of messages using selective forwarding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/58—Message adaptation for wireless communication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/55—Push-based network services
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请涉及数据查询领域,提供一种定时发送消息的方法、装置及存储介质,该方法包括:确定至少一个定时生效日,估算定时生效日的最大消息容量,创建容纳所述最大消息容量的多张哈希hash表,所述hash表包括定时任务、任务内容和定时生效日;获取多个定时消息,所述定时消息是指在定时生效时间时发出的消息;对所述多个定时消息进行hash处理并分表存储在所述多张hash表中;启动每张所述hash表中的定时任务,调用线程分别发送每张hash表中的定时消息到对应的用户。通过采用本方案,能够将定时消息分多表进行存储,解决单表容量过大的瓶颈。
Description
技术领域
本申请涉及数据查询领域,尤其涉及一种定时发送消息的方法、装置及存储介质。
背景技术
目前市场上APP消息推送系统都支持定时消息推送功能,比如想在国庆假期给用户推送一些优惠活动的消息,那么需要在国庆假期前生成定时消息,设置该定时消息的推送时间后,将该定时消息发送给消息推送系统。消息推送系统收到定时消息后,将定时消息存储在数据库中,然后启动定时任务,并遍历这些定时任务,如果某个定时任务到达定时时间,则将定时消息推送到用户的手机上。
但是,采用该方式推送定时消息时,如果定时消息量比较小的情况下,定时消息能比较快和准时的发送到用户手机上;如果定时消息量比较大,如表中有超过千万级数据后,推送就非常慢,无法保证消息的实时性。
发明内容
本申请提供了一种定时发送消息的方法、装置及存储介质,能够解决现有技术中无法保证批量推送定时消息的实时性的问题。
第一方面,本申请提供一种定时发送消息的方法,所述方法包括:
确定至少一个定时生效日,所述定时生效日是指发送消息的时间;
估算定时生效日的最大消息容量,所述最大消息容量是指在特定日待发送的消息条数的最大值;
创建容纳所述最大消息容量的多张哈希hash表,所述hash表包括定时任务、任务内容和定时生效日;
获取多个定时消息,所述定时消息是指在定时生效时间时发出的消息;
对所述多个定时消息进行hash处理并分表存储在所述多张hash表中;
启动每张所述hash表中的定时任务,调用线程分别发送每张hash表中的定时消息到对应的用户。
在一些可能的设计中,所述定时消息为相同内容或不同内容的定时消息。
在一些可能的设计中,每条所述定时消息中包含指定接收对象的用户标识,所述指定接收对象是指安装了通讯卡的终端设备、者网络上的虚拟用户、或者访问网页的用户。
在一些可能的设计中,所述对所述多个定时消息进行hash处理并分表存储在所述多张hash表中,包括:
根据定时消息的标识对各定时消息分别进行hash处理;
根据定时消息的标识对一张hash表中的多个定时消息进行分表,得到多张hash表;
将各定时消息分别存储到对应的hash表中,每个定时消息对应一个定时任务。
在一些可能的设计中,在对所述多个定时消息进行hash处理并分表存储在所述多张hash表中之后,所述启动每张所述hash表中的定时任务之前,所述方法还包括:
配置多个线程和多个定时器,所述多个线程包括消息处理线程、消息监测线程,所述定时器用于对hash表中的定时任务进行定时;
所述启动每张所述hash表中的定时任务,调用线程分别发送每张hash表中的定时消息到对应的用户,包括:
启动所述消息监测线程对各hash表进行监测,以及启动所述定时器对hash表中的定时任务进行定时;
当定时器生效时,触发定时器对应的所述hash表中的定时任务,调用所述消息处理线程并行发送定时消息到对应的用户。
在一些可能的设计中,所述调用所述消息处理线程并行发送定时消息到对应的用户之后,所述方法还包括:
启动所述消息监测线程对各定时消息的发送状态进行监测;
若检测到定时消息的发送状态为超时或者失败,则向所述消息处理线程发送通知消息,所述通知消息用于通知定时消息发送超时或发送失败,以及请求重新发送超时或失败的定时消息。
在一些可能的设计中,所述消息处理线程并行发送定时消息到对应的用户的方式为异步处理方式;
所述启动所述消息监测线程对各定时消息的发送状态进行监测,若检测到发送状态为超时或者失败,则向所述消息处理线程发送通知消息,包括:
对各定时消息的发送时间进行计时,若计时时长超过第一时长,则确定计时时长超过第一时长的定时消息发送超时。
第二方面,本申请提供一种用于发送定时消息的装置,具有实现对应于上述第一方面提供的发送定时消息的方法的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块,所述模块可以是软件和/或硬件。
一种可能的设计中,所述装置包括:
处理模块,用于确定至少一个定时生效日,所述定时生效日是指发送消息的时间;估算定时生效日的最大消息容量,所述最大消息容量是指在特定日待发送的消息条数的最大值;创建容纳所述最大消息容量的多张哈希hash表,所述hash表包括定时任务、任务内容和定时生效日;
收发模块,用于获取多个定时消息,所述定时消息是指在定时生效时间时发出的消息;
所述处理模块还用于对所述多个定时消息进行hash处理并分表存储在所述多张hash表中;启动每张所述hash表中的定时任务,调用线程分别发送每张hash表中的定时消息到对应的用户。
在一些可能的设计中,所述定时消息为相同内容或不同内容的定时消息。
在一些可能的设计中,每条所述定时消息中包含指定接收对象的用户标识,所述指定接收对象是指安装了通讯卡的终端设备、者网络上的虚拟用户、或者访问网页的用户。
在一些可能的设计中,所述处理模块用于:
根据定时消息的标识对各定时消息分别进行hash处理;
根据定时消息的标识对一张hash表中的多个定时消息进行分表,得到多张hash表;
将各定时消息分别存储到对应的hash表中,每个定时消息对应一个定时任务。
在一些可能的设计中,所述处理模块在对所述多个定时消息进行hash处理并分表存储在所述多张hash表中之后,启动每张所述hash表中的定时任务之前,还用于:
配置多个线程和多个定时器,所述多个线程包括消息处理线程、消息监测线程,所述定时器用于对hash表中的定时任务进行定时;
启动所述消息监测线程对各hash表进行监测,以及启动所述定时器对hash表中的定时任务进行定时;
当定时器生效时,触发定时器对应的所述hash表中的定时任务,调用所述消息处理线程并行发送定时消息到对应的用户。
在一些可能的设计中,所述处理模块调用所述消息处理线程并行发送定时消息到对应的用户之后,还用于:
启动所述消息监测线程对各定时消息的发送状态进行监测;
若检测到定时消息的发送状态为超时或者失败,则向所述消息处理线程发送通知消息,所述通知消息用于通知定时消息发送超时或发送失败,以及请求重新发送超时或失败的定时消息。
在一些可能的设计中,所述消息处理线程并行发送定时消息到对应的用户的方式为异步处理方式;所述处理模块用于:
对各定时消息的发送时间进行计时,若计时时长超过第一时长,则确定计时时长超过第一时长的定时消息发送超时。
本申请又一方面提供了一种计算机装置,其包括至少一个连接的处理器、存储器和收发器,其中,所述存储器用于存储程序代码,所述处理器用于调用所述存储器中的程序代码来执行上述各方面所述的方法。
本申请又一方面提供了一种计算机存储介质,其包括指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
相较于现有技术,本申请提供的方案中,估算定时生效日的最大消息容量后,创建容纳所述最大消息容量的多张哈希hash表,所述hash表包括定时任务、任务内容和定时生效日,对多个定时消息进行hash处理并分表存储在所述多张hash表中,再启动每张所述hash表中的定时任务,调用线程分别发送每张hash表中的定时消息到对应的用户。通过采用本方案,能够将定时消息分多表进行存储,解决单表容量过大的瓶颈。
附图说明
图1为本申请实施例中定时发送消息的方法的一种流程示意图;
图2为本申请实施例中用于发送定时消息的装置的一种结构示意图;
图3为本申请实施例中计算机装置的一种结构示意图。
本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块,本申请中所出现的模块的划分,仅仅是一种逻辑上的划分,实际应用中实现时可以有另外的划分方式,例如多个模块可以结合成或集成在另一个系统中,或一些特征可以忽略,或不执行。
本申请提供一种定时发送消息的方法、装置及存储介质。可用于各大运营商、各大网站或各大购物平台、或各大购物平台中的第三方卖家进行消息推广的场景。
为解决上述技术问题,本申请主要提供以下技术方案:
将收到的定时消息进行分表存储,按照定时消息ID进行hash处理后分表存储在预先建好的存储定时消息的各个表中。根据预估的当天定时消息的最大消息容量,创建容纳该最大预估容量的多张表,将定时消息通过hash函数分表将定时消息分表存储在这多张表中,然后每个表分别启动定时任务,读取各个表中目前需要发送的定时消息。能够解决上述背景技术中的技术问题,以及提升定时消息的推送效率。
参照图1,以下对本申请提供一种定时发送消息的方法进行举例说明,所述方法包括:
101、确定至少一个定时生效日。
其中,所述定时生效日是指发送消息的时间。例如,定义12-24日为定时生效日。
102、估算定时生效日的最大消息容量。
其中,所述最大消息容量是指在特定日待发送的消息条数的最大值。例如,12-24日为平安夜,那么预估在12-24日,用户与用户之间会互相发送祝福消息,对于各祝福消息的服务商而言,则会预估12-24日可能需要发出的祝福消息的最大值,以此应对祝福消息因为网络拥堵而为能及时送达或者发送失败的情形。
一些实施方式中,该最大消息容量可以是针对同一天的不同类型或不同活动的定时消息的容量估计,例如,联通运营商按照买家在电商平台订阅的消息类型,预估在12-24日发送100万条广告给100万个买家,同时,联通运营商还预估在12-24日当天需要向2500万个联通用户发送祝福消息,那么,该最大消息容量对于联通运营商而言,则需要预估为2600万条。
103、创建容纳所述最大消息容量的多张哈希hash表。
本申请实施例中,所述hash表包括定时任务、任务内容和定时生效日。
其中,hash表是指哈希表,也可指散列表,hash表是一种特殊的数据结构,它同数组、链表以及二叉排序树等相比较有很明显的区别,hash表不需要与表中存在的记录的关键字进行比较来进行查找,就能够快速定位到想要查找的记录。hash是指一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。hash表中可包括消息内容、消息内容的存储地址、发送时间和发送顺序。当hash表生效时,可调用对应的线程对任务队列中的发送任务进行处理。
需要新增一条分表记录时,首先对用户ID(即接受定时消息的对象)进行hash计算,得到hash值,该hash值取值在0-99之间,根据该hash值将对应的用户ID数据写入到同一张分表中,这样就可以将不同用户的购买记录放入不同的分表中。目前采用的hash算法如下:
根据上述hash算法可知,对用户ID(user identify,user ID)做crc32的hash计算,crc32计算结果为一个10进制数,在不同bit位的操作系统下,得到的值可能会不同,所以对其进行一个统一的处理,然后对这个自然数进行取余计算,取余的除数就是你的分表数,比如这里为100。这样最终得到了一个在0-99以内的表后缀数index,然后拼接固定的表前缀messagesend_,得到完整的分表索引(即messagesend_index)。之后的操作和不分表情况下的写库操作一致,将数据插入到对应的分表中即可。
为便利理解,下面以表1为例,预估定时消息的最大发送量。表1为定时消息发送到不同用户的发送记录的原始表,表1为分表存储后的每条发送记录,所有分表都采用与相同的表结构,例如都可以采用表1所示的表结构,本申请不对表结构作限定。
表1
例如,12-24日为平安夜,那么预估在12-24日,用户与用户之间会互相发送祝福消息(例如包括即时通讯消息、手机短信等网络方式),对于各祝福消息的服务商则会预先创建好hash表,该hash表是指发送祝福消息的任务队列,该表1所示的hash表只会在该12-24日会启动任务队列中的发送操作,那么就可以认为该hash表的定时生效日为12-24日。在12-24日这天,通过userID,hash即可快速的定位到与该userID对应的分表,然后对直接直接select即可获取到对应的消息内容,然后发送给userID对应的终端设备。可见,通过提前创建好hash表,能够应对祝福消息因为网络拥堵而为能及时送达或者发送失败的情形。
104、获取多个定时消息。
其中,所述定时消息是指在定时生效时间时发出的消息。
本申请中,所述定时消息为相同内容或不同内容的定时消息,例如,这些定时消息都是关于新年祝福的短信,在内容上可相同或不同。又例如,这些定时消息都是新品推广的消息,在内容上相同或相似。
一些实施方式中,每条所述定时消息中包含指定接收对象的用户标识,所述指定接收对象是指安装了通讯卡的终端设备、者网络上的虚拟用户、或者访问网页的用户。例如,若联通运营商在预定在除夕向各联通用户发送新年祝福短信,那么,在制定完相同定时消息后,可以在每条定时消息中加上联通号码机主的姓名,这样能够避免收到新年祝福短信的联通用户感觉到是群发。
另一些实施方式中,还可以根据指定接收对象的年龄、性别或职业来推送定制化的定时消息。例如,针对老师、公务员等服务业的用户,则推送复合其社会身份的定时消息,例如关于教育沙龙、竞赛或期刊等特定领域的消息。
105、对所述多个定时消息进行hash处理并分表存储在所述多张hash表中。
一些实施方式中,所述对所述多个定时消息进行hash处理并分表存储在所述多张hash表中,包括:
根据定时消息的标识对各定时消息分别进行hash处理;
根据定时消息的标识对一张hash表中的多个定时消息进行分表,得到多张hash表;
将各定时消息分别存储到对应的hash表中,每个定时消息对应一个定时任务。
本申请旨在解决数量庞大的定时消息的发送问题,由于一张hash表中定时消息的数量庞大,为便于消息的实时性处理,将一张hash表中的数量庞大的多个定时消息进行分表,这样就可以分别启动每张hash表的定时任务了,也能保障每张hash表中的各个发送任务的实时性,以及提高定时消息发送的成功率。
106、启动每张所述hash表中的定时任务,调用线程分别发送每张hash表中的定时消息到对应的用户。
与现有机制相比,本申请实施例中,估算定时生效日的最大消息容量后,创建容纳所述最大消息容量的多张哈希hash表,所述hash表包括定时任务、任务内容和定时生效日,对多个定时消息进行hash处理并分表存储在所述多张hash表中,再启动每张所述hash表中的定时任务,调用线程分别发送每张hash表中的定时消息到对应的用户。通过采用本方案,能够将定时消息分多表进行存储,解决单表容量过大的瓶颈。以及通过同时多个定时任务同时执行,提升定时消息的推送效率。
可选的,在本申请的一些实施例中,在对所述多个定时消息进行hash处理并分表存储在所述多张hash表中之后,所述启动每张所述hash表中的定时任务之前,所述方法还包括:
配置多个线程和多个定时器,所述多个线程包括消息处理线程、消息监测线程,所述定时器用于对hash表中的定时任务进行定时;
相应的,所述启动每张所述hash表中的定时任务,调用线程分别发送每张hash表中的定时消息到对应的用户,包括:
启动所述消息监测线程对各hash表进行监测,以及启动所述定时器对hash表中的定时任务进行定时;
当定时器生效时,触发定时器对应的所述hash表中的定时任务,调用所述消息处理线程并行发送定时消息到对应的用户。
可选的,在本申请的一些实施例中,所述调用所述消息处理线程并行发送定时消息到对应的用户之后,所述方法还包括:
启动所述消息监测线程对各定时消息的发送状态进行监测;
若检测到定时消息的发送状态为超时或者失败,则向所述消息处理线程发送通知消息,所述通知消息用于通知定时消息发送超时或发送失败,以及请求重新发送超时或失败的定时消息。
可选的,在本申请的一些实施例中,所述消息处理线程并行发送定时消息到对应的用户的方式为异步处理方式;所述启动所述消息监测线程对各定时消息的发送状态进行监测,若检测到发送状态为超时或者失败,则向所述消息处理线程发送通知消息,包括:
对各定时消息的发送时间进行计时,若计时时长超过第一时长,则确定计时时长超过第一时长的定时消息发送超时。例如,预定义第一时长为1s,从除夕祝福消息的发送起始时刻开始计时,若超过1s仍未发送成功且仍在任务队列中,则表示该除夕祝福消息发送超时。
上述图1所对应的实施例中提及的各项技术特征也同样适用于本申请中的图2和图3所对应的实施例,后续类似之处不再赘述。
以上对本申请中一种发送定时消息的方法进行说明,以下对执行上述发送定时消息的装置进行描述。
如图2所示的一种用于发送定时消息的装置20的结构示意图,其可应用于消息推广、消息群发和邮件群发等领域。本申请实施例中的装置20能够实现对应于上述图1所对应的实施例中所执行的发送定时消息的方法的步骤。装置20实现的功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块,所述模块可以是软件和/或硬件。所述装置20可包括处理模块201和收发模块202,所述处理模块201和获取模块202的功能实现可参考图1所对应的实施例中所执行的操作,此处不作赘述。处理模块201可用于控制所述获取模块202的收发操作。
一些实施方式中,所述处理模块201可用于确定至少一个定时生效日,所述定时生效日是指发送消息的时间;估算定时生效日的最大消息容量,所述最大消息容量是指在特定日待发送的消息条数的最大值;创建容纳所述最大消息容量的多张哈希hash表,所述hash表包括定时任务、任务内容和定时生效日;
所述收发模块202可用于获取多个定时消息,所述定时消息是指在定时生效时间时发出的消息;
所述处理模块201还用于对所述多个定时消息进行hash处理并分表存储在所述多张hash表中;启动每张所述hash表中的定时任务,调用线程分别发送每张hash表中的定时消息到对应的用户。
本申请实施例中,所述处理模块201估算定时生效日的最大消息容量后,创建容纳所述最大消息容量的多张哈希hash表,所述hash表包括定时任务、任务内容和定时生效日,对多个定时消息进行hash处理并分表存储在所述多张hash表中,再启动每张所述hash表中的定时任务,调用线程分别发送每张hash表中的定时消息到对应的用户。通过采用本方案,能够将定时消息分多表进行存储,解决单表容量过大的瓶颈。
一些实施方式中,所述定时消息为相同内容或不同内容的定时消息。每条所述定时消息中包含指定接收对象的用户标识,所述指定接收对象是指安装了通讯卡的终端设备、者网络上的虚拟用户、或者访问网页的用户。
一些实施方式中,所述处理模块201用于:
根据定时消息的标识对各定时消息分别进行hash处理;
根据定时消息的标识对一张hash表中的多个定时消息进行分表,得到多张hash表;
将各定时消息分别存储到对应的hash表中,每个定时消息对应一个定时任务。
一些实施方式中,所述处理模块201在对所述多个定时消息进行hash处理并分表存储在所述多张hash表中之后,启动每张所述hash表中的定时任务之前,还用于:
配置多个线程和多个定时器,所述多个线程包括消息处理线程、消息监测线程,所述定时器用于对hash表中的定时任务进行定时;
启动所述消息监测线程对各hash表进行监测,以及启动所述定时器对hash表中的定时任务进行定时;
当定时器生效时,触发定时器对应的所述hash表中的定时任务,调用所述消息处理线程并行发送定时消息到对应的用户。
一些实施方式中,所述处理模块201调用所述消息处理线程并行发送定时消息到对应的用户之后,还用于:
启动所述消息监测线程对各定时消息的发送状态进行监测;
若检测到定时消息的发送状态为超时或者失败,则向所述消息处理线程发送通知消息,所述通知消息用于通知定时消息发送超时或发送失败,以及请求重新发送超时或失败的定时消息。
一些实施方式中,所述消息处理线程并行发送定时消息到对应的用户的方式为异步处理方式;所述处理模块201用于:
对各定时消息的发送时间进行计时,若计时时长超过第一时长,则确定计时时长超过第一时长的定时消息发送超时。
上面从模块化功能实体的角度分别介绍了本申请实施例中的计算机装置,以下从硬件角度介绍一种计算机装置,如图3所示,其包括:处理器、存储器、收发器(也可以是输入输出单元,图3中未标识出)以及存储在所述存储器中并可在所述处理器上运行的计算机程序。例如,该计算机程序可以为图1所对应的实施例中发送定时消息的方法对应的程序。例如,当改计算机装置实现如图2所示的装置20的功能时,所述处理器执行所述计算机程序时实现上述图2所对应的实施例中由装置20执行的发送定时消息的方法中的各步骤;或者,所述处理器执行所述计算机程序时实现上述图2所对应的实施例的装置20中各模块的功能。又例如,该计算机程序可以为图1所对应的实施例中发送定时消息的方法对应的程序。
所称处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述计算机装置的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、视频数据等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
所述收发器也可以用接收器和发送器代替,可以为相同或者不同的物理实体。为相同的物理实体时,可以统称为收发器。该收发器可以为输入输出单元。
所述存储器可以集成在所述处理器中,也可以与所述处理器分开设置。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器或者网络设备等)执行本申请各个实施例所述的方法。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,这些均属于本申请的保护之内。
Claims (10)
1.一种定时发送消息的方法,其特征在于,所述方法包括:
确定至少一个定时生效日,所述定时生效日是指发送消息的时间;
估算定时生效日的最大消息容量,所述最大消息容量是指在特定日待发送的消息条数的最大值;
创建容纳所述最大消息容量的多张哈希hash表,所述hash表包括定时任务、任务内容和定时生效日;
获取多个定时消息,所述定时消息是指在定时生效时间时发出的消息;
对所述多个定时消息进行hash处理并分表存储在所述多张hash表中;
启动每张所述hash表中的定时任务,调用线程分别发送每张hash表中的定时消息到对应的用户;
需要新增一条分表记录时,对用户ID进行hash计算,得到hash值,该hash值取值在0-99之间,根据该hash值将对应的用户ID数据写入到同一张分表中;其中,所述用户ID为接受定时消息的对象;
对用户ID做crc32的hash计算,crc32计算结果为一个10进制数,在不同bit位的操作系统下,得到的值不同,对所述得到的值进行统一处理,然后对这个自然数进行取余计算,取余的除数为分表数,最终得到在0-99以内的表后缀数index,拼接固定的表前缀messagesend_,得到完整的分表索引,基于分表索引,将数据插入到对应的分表中。
2.根据权利要求1所述方法,其特征在于,所述定时消息为相同内容或不同内容的定时消息。
3.根据权利要求2所述方法,其特征在于,每条所述定时消息中包含指定接收对象的用户标识,所述指定接收对象是指安装了通讯卡的终端设备、者网络上的虚拟用户、或者访问网页的用户。
4.根据权利要求3所述方法,其特征在于,所述对所述多个定时消息进行hash处理并分表存储在所述多张hash表中,包括:
根据定时消息的标识对各定时消息分别进行hash处理;
根据定时消息的标识对一张hash表中的多个定时消息进行分表,得到多张hash表;
将各定时消息分别存储到对应的hash表中,每个定时消息对应一个定时任务。
5.根据权利要求4所述方法,其特征在于,在对所述多个定时消息进行hash处理并分表存储在所述多张hash表中之后,所述启动每张所述hash表中的定时任务之前,所述方法还包括:
配置多个线程和多个定时器,所述多个线程包括消息处理线程、消息监测线程,所述定时器用于对hash表中的定时任务进行定时;
所述启动每张所述hash表中的定时任务,调用线程分别发送每张hash表中的定时消息到对应的用户,包括:
启动所述消息监测线程对各hash表进行监测,以及启动所述定时器对hash表中的定时任务进行定时;
当定时器生效时,触发定时器对应的所述hash表中的定时任务,调用所述消息处理线程并行发送定时消息到对应的用户。
6.根据权利要求5所述方法,其特征在于,所述调用所述消息处理线程并行发送定时消息到对应的用户之后,所述方法还包括:
启动所述消息监测线程对各定时消息的发送状态进行监测;
若检测到定时消息的发送状态为超时或者失败,则向所述消息处理线程发送通知消息,所述通知消息用于通知定时消息发送超时或发送失败,以及请求重新发送超时或失败的定时消息。
7.根据权利要求6所述方法,其特征在于,所述消息处理线程并行发送定时消息到对应的用户的方式为异步处理方式;
所述启动所述消息监测线程对各定时消息的发送状态进行监测,若检测到发送状态为超时或者失败,则向所述消息处理线程发送通知消息,包括:
对各定时消息的发送时间进行计时,若计时时长超过第一时长,则确定计时时长超过第一时长的定时消息发送超时。
8.一种用于发送定时消息的装置,其特征在于,所述装置包括:
处理模块,用于确定至少一个定时生效日,所述定时生效日是指发送消息的时间;估算定时生效日的最大消息容量,所述最大消息容量是指在特定日待发送的消息条数的最大值;创建容纳所述最大消息容量的多张哈希hash表,所述hash表包括定时任务、任务内容和定时生效日;
收发模块,用于获取多个定时消息,所述定时消息是指在定时生效时间时发出的消息;
所述处理模块还用于对所述多个定时消息进行hash处理并分表存储在所述多张hash表中;启动每张所述hash表中的定时任务,调用线程分别发送每张hash表中的定时消息到对应的用户;
写入模块,用于需要新增一条分表记录时,对用户ID进行hash计算,得到hash值,该hash值取值在0-99之间,根据该hash值将对应的用户ID数据写入到同一张分表中;其中,所述用户ID为接受定时消息的对象;
插入模块,用于对用户ID做crc32的hash计算,crc32计算结果为一个10进制数,在不同bit位的操作系统下,得到的值不同,对所述得到的值进行统一处理,然后对这个自然数进行取余计算,取余的除数为分表数,最终得到在0-99以内的表后缀数index,拼接固定的表前缀messagesend_,得到完整的分表索引,基于分表索引,将数据插入到对应的分表中。
9.一种计算机装置,其特征在于,所述装置包括:
至少一个处理器、存储器、接收器和发射器;
其中,所述存储器用于存储程序代码,所述处理器用于调用所述存储器中存储的程序代码来执行如权利要求1-7中任一项所述的方法。
10.一种计算机存储介质,其特征在于,其包括指令,当其在计算机上运行时,使得计算机执行如权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910182484.9A CN110061902B (zh) | 2019-03-12 | 2019-03-12 | 一种定时发送消息的方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910182484.9A CN110061902B (zh) | 2019-03-12 | 2019-03-12 | 一种定时发送消息的方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110061902A CN110061902A (zh) | 2019-07-26 |
CN110061902B true CN110061902B (zh) | 2022-07-15 |
Family
ID=67316123
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910182484.9A Active CN110061902B (zh) | 2019-03-12 | 2019-03-12 | 一种定时发送消息的方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110061902B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111030918B (zh) * | 2019-11-19 | 2022-03-25 | 维沃移动通信有限公司 | 一种消息处理方法、电子设备及服务器 |
CN113672358B (zh) * | 2020-05-15 | 2024-10-18 | 北京沃东天骏信息技术有限公司 | 定时任务处理方法及装置、系统、电子设备和存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107078844A (zh) * | 2014-10-17 | 2017-08-18 | 高通股份有限公司 | 用于广告中的服务提示信息的布隆过滤器 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101604337B (zh) * | 2009-07-13 | 2011-08-24 | 中兴通讯股份有限公司 | 一种哈希表项存储、查找装置及方法 |
US8788881B2 (en) * | 2011-08-17 | 2014-07-22 | Lookout, Inc. | System and method for mobile device push communications |
CN107634993B (zh) * | 2017-09-05 | 2019-08-13 | 腾讯科技(深圳)有限公司 | 一种信息推送事件处理方法、装置及电子设备 |
CN108833584B (zh) * | 2018-06-29 | 2020-07-24 | 掌阅科技股份有限公司 | 消息推送方法、终端、服务器及计算机存储介质 |
-
2019
- 2019-03-12 CN CN201910182484.9A patent/CN110061902B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107078844A (zh) * | 2014-10-17 | 2017-08-18 | 高通股份有限公司 | 用于广告中的服务提示信息的布隆过滤器 |
Also Published As
Publication number | Publication date |
---|---|
CN110061902A (zh) | 2019-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104253741B (zh) | 一种信息发送方法、相关装置及系统 | |
CN105608117A (zh) | 一种信息推荐方法及装置 | |
CN106095789B (zh) | 一种消息订阅管理装置及方法 | |
CN109167840B (zh) | 一种任务推送方法、节点自治服务器及边缘缓存服务器 | |
CN104348714A (zh) | 移动终端、服务器以及基于好友的应用程序推荐方法 | |
CN104090899B (zh) | 一种反馈展示内容信息的方法和装置 | |
CN110061902B (zh) | 一种定时发送消息的方法、装置及存储介质 | |
CN102761609A (zh) | 用于服务器的数据推送系统及数据推送方法 | |
US11238402B2 (en) | Information operation | |
CN111131368A (zh) | 消息推送方法和装置 | |
CN105022815A (zh) | 信息拦截方法及装置 | |
CN111654518A (zh) | 内容推送方法、装置、电子设备及计算机可读存储介质 | |
CN111897978A (zh) | 直播状态监测方法、装置、电子设备及存储介质 | |
CN108206776A (zh) | 一种群组历史消息的查询方法和装置 | |
CN100579126C (zh) | 一种邮件订阅方法和服务器 | |
CN102026097B (zh) | 业务配置分片获取方法及服务器 | |
US8510346B2 (en) | Efficiently handling information on changes to a UDDI registry including those resulting in virtual deletes | |
CN112182378A (zh) | 消息推送方法、装置、终端及介质 | |
CN110309028B (zh) | 监控信息获取方法、服务监控方法、装置及系统 | |
CN112148972A (zh) | 待推荐信息的筛选方法及装置 | |
CN108512803A (zh) | 提醒更改账号绑定电话号码的方法及装置 | |
CN106603701A (zh) | 基于长连接平台下发消息的方法及装置 | |
CN112887925B (zh) | 短信推送方法、边缘服务器节点和业务服务器节点 | |
CN105224438A (zh) | 基于网盘的用户消费提醒方法及装置 | |
CN111935204A (zh) | 一种节目推荐方法、装置及电子设备 |
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 |