CN106776072A - 消息推送方法及*** - Google Patents
消息推送方法及*** Download PDFInfo
- Publication number
- CN106776072A CN106776072A CN201611170558.XA CN201611170558A CN106776072A CN 106776072 A CN106776072 A CN 106776072A CN 201611170558 A CN201611170558 A CN 201611170558A CN 106776072 A CN106776072 A CN 106776072A
- Authority
- CN
- China
- Prior art keywords
- message
- push
- treat
- queue
- thread
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Telephonic Communication Services (AREA)
Abstract
本发明公开了一种消息推送方法及***,所述消息推送方法包括以下步骤:S1、通过主线程从数据库消息表中获取待推送消息,并将所述待推送消息放入消息队列中;S2、分别通过多个消费线程定时从所述消息队列中获取待推送消息,并将获取的待推送消息依次推送至外部设备;S3、判断所述消息队列是否为空,若是,则执行步骤S1,若否,执行步骤S2。与现有技术相比,本发明采用多线程任务模式向外部设备推送消息,实现了一次性大量推送消息的目的,提高了推送效率。
Description
技术领域
本发明涉及通讯领域,特别涉及一种多线程任务模式的消息推送方法及***。
背景技术
现有的消息推送方式采用单线程工作模式,即无论消息的数量有多大,都是逐条推送的。举个例子,一个活动推广需要推送几十万的消息量,采用现有的消息推送方式动辄需要十几个小时才能推送完成,推送耗时过长、推送效率低下,难以适应现在活动推广的步伐。
发明内容
本发明要解决的技术问题是为了克服现有技术中采用单线程方式推送消息导致推送效率低下的缺陷,提供一种多线程任务模式的消息推送方法及***。
本发明是通过下述技术方案来解决上述技术问题的:
一种消息推送方法,其特点在于,包括以下步骤:
S1、通过主线程从数据库消息表中获取待推送消息,并将所述待推送消息放入消息队列中;
S2、分别通过多个消费线程定时从所述消息队列中获取待推送消息,并将获取的待推送消息依次推送至外部设备;
S3、判断所述消息队列是否为空,若是,则执行步骤S1,若否,执行步骤S2。
较佳地,通过每个消费线程从所述消息队列中获取待推送消息的数量均为至少一个。
较佳地,通过每个消费线程从所述消息队列中获取待推送消息的周期不同。
较佳地,所述外部设备为移动终端。
本发明还提供一种消息推送***,其特点在于,包括:
生产任务模块,用于通过主线程从数据库消息表中获取待推送消息,并将所述待推送消息放入消息队列中;
消费任务模块,用于分别通过多个消费线程定时从所述消息队列中获取待推送消息,并将获取的待推送消息依次推送至外部设备;
判断模块,用于判断所述消息队列是否为空,并在是的情况下调用所述生产任务模块,以及在否的情况下调用所述消费任务模块。
较佳地,所述消费任务模块中,通过每个消费线程从所述消息队列中获取待推送消息的数量均为至少一个。
较佳地,所述消费任务模块中,通过每个消费线程从所述消息队列中获取待推送消息的周期不同。
较佳地,所述外部设备为移动终端。
在符合本领域常识的基础上,上述各优选条件,可任意组合,即得本发明各较佳实例。
本发明的积极进步效果在于:与现有技术相比,本发明采用多线程任务模式向外部设备推送消息,具体地,采用通过设定主线程从数据库消息表中获取待推送消息并将其放入消息队列中,通过设定多个消费线程定时到消息队列中消费,实现了一次性大量推送消息的目的,提高了推送效率。
附图说明
图1为本发明实施例的消息推送方法的流程图。
图2为本发明实施例的消息推送***的结构框图。
具体实施方式
下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。
本实施例提供一种消息推送方法,如图1所示,包括以下步骤:
步骤101、通过主线程从数据库消息表中获取待推送消息,并将所述待推送消息放入消息队列中。
步骤102、分别通过多个消费线程定时从所述消息队列中获取待推送消息,并将获取的待推送消息依次推送至外部设备。
本实施例中,通过每个消费线程从所述消息队列中获取待推送消息的数量可以为一个,也可以为多个。另外,不同消费线程从消息队列中获取待推送消息的数量可以相同,也可以不同。
本实施例中,通过每个消费线程从所述消息队列中获取待推送消息的周期不同,例如,消费线程A1每隔10ms从消息队列中获取一次待推送消息,消费线程A2每隔7ms从消息队列中获取一次待推送消息。
所述外部设备可以为移动终端,例如手机、平板电脑等。每个消费线程依次将从消息队列中获取到的待推送消息推送至外部设备,直至将所有获取到的待推送消息推送完毕。
步骤103、判断所述消息队列是否为空,若是,则返回步骤101,若否,则返回步骤102。
通过主线程从已有的数据库消息表中获取若干个待推送消息,并将获取的待推送消息放入消息队列中。需要说明的是,数据库消息表的待推送消息是实时增加的,当消息队列中待推送消息的数量为0时,说明已经完全被消费线程所消费,这时再通过主线程从数据库消息表中获取新的待推送消息,并将其放入消息队列中,以供多个消费线程消费。这里所说的消费是指,消费线程从消息队列中获取待推送消息。
举个具体的例子,设主线程从数据库消息表中获取了10000条与活动推广相关的待推送消息,并将这些消息放入了消息队列中。消费线程的个数为15个,其中10个消费线程均每隔20ms从消息队列中获取一次待推送消息,每次获取的数量为3条,且每个消费线程20ms内发送完这3条消息,另外5个消费线程均每隔5ms从消息队列中获取一次待推送消息,每次获取的数量为1条,且每个消费线程5ms内发送完这1条消息。那么只需要4s就能够将这10000条待推送消息推送至大量的移动终端中,大大提升了活动推广的效率。
与现有技术相比,本实施例采用多线程任务模式向外部设备推送消息,具体地,采用通过设定主线程从数据库消息表中获取待推送消息并将其放入消息队列中,通过设定多个消费线程定时到消息队列中消费,实现了一次性大量推送消息的目的,提高了推送效率。
本实施例还提供一种消息推送***20,如图2所示,包括生产任务模块21、消费任务模块22和判断模块23。
生产任务模块21用于通过主线程从数据库消息表中获取待推送消息,并将所述待推送消息放入消息队列中;
消费任务模块22用于分别通过多个消费线程定时从所述消息队列中获取待推送消息,并将获取的待推送消息依次推送至外部设备;
判断模块23用于判断所述消息队列是否为空,并在是的情况下调用生产任务模块21,以及在否的情况下调用消费任务模块22。
虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。
Claims (8)
1.一种消息推送方法,其特征在于,包括以下步骤:
S1、通过主线程从数据库消息表中获取待推送消息,并将所述待推送消息放入消息队列中;
S2、分别通过多个消费线程定时从所述消息队列中获取待推送消息,并将获取的待推送消息依次推送至外部设备;
S3、判断所述消息队列是否为空,若是,则执行步骤S1,若否,执行步骤S2。
2.如权利要求1所述的消息推送方法,其特征在于,通过每个消费线程从所述消息队列中获取待推送消息的数量均为至少一个。
3.如权利要求1所述的消息推送方法,其特征在于,通过每个消费线程从所述消息队列中获取待推送消息的周期不同。
4.如权利要求1-3中任一项所述的消息推送方法,其特征在于,所述外部设备为移动终端。
5.一种消息推送***,其特征在于,包括:
生产任务模块,用于通过主线程从数据库消息表中获取待推送消息,并将所述待推送消息放入消息队列中;
消费任务模块,用于分别通过多个消费线程定时从所述消息队列中获取待推送消息,并将获取的待推送消息依次推送至外部设备;
判断模块,用于判断所述消息队列是否为空,并在是的情况下调用所述生产任务模块,以及在否的情况下调用所述消费任务模块。
6.如权利要求5所述的消息推送***,其特征在于,所述消费任务模块中,通过每个消费线程从所述消息队列中获取待推送消息的数量均为至少一个。
7.如权利要求5所述的消息推送***,其特征在于,所述消费任务模块中,通过每个消费线程从所述消息队列中获取待推送消息的周期不同。
8.如权利要求5-7中任一项所述的消息推送***,其特征在于,所述外部设备为移动终端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611170558.XA CN106776072A (zh) | 2016-12-16 | 2016-12-16 | 消息推送方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611170558.XA CN106776072A (zh) | 2016-12-16 | 2016-12-16 | 消息推送方法及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106776072A true CN106776072A (zh) | 2017-05-31 |
Family
ID=58892051
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611170558.XA Pending CN106776072A (zh) | 2016-12-16 | 2016-12-16 | 消息推送方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106776072A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108874562A (zh) * | 2018-06-21 | 2018-11-23 | 北京顺丰同城科技有限公司 | 分布式高并发消息队列推送*** |
CN109271417A (zh) * | 2018-11-23 | 2019-01-25 | 福建榕基软件股份有限公司 | 一种基于数据库的轻量级消息队列实现方法及存储设备 |
CN109783573A (zh) * | 2018-12-18 | 2019-05-21 | 北京华夏电通科技有限公司 | 多路推送的数据同步方法及终端 |
CN112492019A (zh) * | 2020-11-24 | 2021-03-12 | 上海优扬新媒信息技术有限公司 | 消息推送方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103645942A (zh) * | 2013-12-12 | 2014-03-19 | 北京奇虎科技有限公司 | 基于消息队列的共享内存写入及读取方法和*** |
US20150296037A1 (en) * | 2014-04-14 | 2015-10-15 | Wistron Corporation | Pushlet instant messaging framework and pushlet instant messaging method |
CN105471722A (zh) * | 2015-12-31 | 2016-04-06 | 深圳前海微众银行股份有限公司 | 消息处理方法和装置 |
US20160179592A1 (en) * | 2014-12-22 | 2016-06-23 | International Business Machines Corporation | Addressing for inter-thread push communication |
CN106201676A (zh) * | 2016-06-28 | 2016-12-07 | 浪潮软件集团有限公司 | 一种任务分配方法及装置 |
-
2016
- 2016-12-16 CN CN201611170558.XA patent/CN106776072A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103645942A (zh) * | 2013-12-12 | 2014-03-19 | 北京奇虎科技有限公司 | 基于消息队列的共享内存写入及读取方法和*** |
US20150296037A1 (en) * | 2014-04-14 | 2015-10-15 | Wistron Corporation | Pushlet instant messaging framework and pushlet instant messaging method |
US20160179592A1 (en) * | 2014-12-22 | 2016-06-23 | International Business Machines Corporation | Addressing for inter-thread push communication |
CN105471722A (zh) * | 2015-12-31 | 2016-04-06 | 深圳前海微众银行股份有限公司 | 消息处理方法和装置 |
CN106201676A (zh) * | 2016-06-28 | 2016-12-07 | 浪潮软件集团有限公司 | 一种任务分配方法及装置 |
Non-Patent Citations (2)
Title |
---|
夏露 等: "消息队列在智能优化算法中的应用", 《航空计算技术》 * |
胡苏太等: "《英汉信息安全技术辞典》", 31 August 2004 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108874562A (zh) * | 2018-06-21 | 2018-11-23 | 北京顺丰同城科技有限公司 | 分布式高并发消息队列推送*** |
CN108874562B (zh) * | 2018-06-21 | 2022-08-02 | 北京顺丰同城科技有限公司 | 分布式高并发消息队列推送*** |
CN109271417A (zh) * | 2018-11-23 | 2019-01-25 | 福建榕基软件股份有限公司 | 一种基于数据库的轻量级消息队列实现方法及存储设备 |
CN109783573A (zh) * | 2018-12-18 | 2019-05-21 | 北京华夏电通科技有限公司 | 多路推送的数据同步方法及终端 |
CN112492019A (zh) * | 2020-11-24 | 2021-03-12 | 上海优扬新媒信息技术有限公司 | 消息推送方法、装置、电子设备及存储介质 |
CN112492019B (zh) * | 2020-11-24 | 2023-07-18 | 度小满科技(北京)有限公司 | 消息推送方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106776072A (zh) | 消息推送方法及*** | |
CN104699723B (zh) | 数据交换适配器、异构***之间数据同步***和方法 | |
CN107566910B (zh) | 直播资源自定义分配监测方法、存储介质、电子设备及*** | |
CN102123084B (zh) | 云计算操作***中资源调度方法及*** | |
CN103942707B (zh) | 基于实时竞价的广告效果优化*** | |
CN106971254A (zh) | 一种业务监控***及方法 | |
CN104683472A (zh) | 一种支持大数据量的数据传输方法 | |
CN105117283A (zh) | 一种任务拆分方法及*** | |
CN104375893A (zh) | 一种基于两级操作***架构的分区调度方法 | |
CN106815254A (zh) | 一种数据处理方法和装置 | |
CN104731899A (zh) | 一种基于异步处理的数据高并发处理方法 | |
CN103685540A (zh) | 基于云计算的任务分解复合方法 | |
CN107748753A (zh) | 一种基于双随机的抽取***、方法及装置 | |
CN104679493B (zh) | 一种流程化的事件处理机制的改进方法 | |
CN106201666A (zh) | 一种分布式事务实现方法 | |
CN103905482A (zh) | 推送信息的方法、推送服务器和*** | |
CN105302602A (zh) | 一种云平台应用程序平滑在线升级方法 | |
CN106982128A (zh) | 基于网络的社群构建方法 | |
CN109800074A (zh) | 任务数据并发执行方法、装置以及电子设备 | |
CN104239537A (zh) | 一种大数据预处理文本数据生成处理流程实现方法 | |
CN112860401A (zh) | 任务调度方法、装置、电子设备和存储介质 | |
CN110825453B (zh) | 基于大数据平台的数据处理方法及装置 | |
CN104378239A (zh) | 基于集群框架的快速可靠性指标统计***及方法 | |
CN101969402B (zh) | 基于并行处理的数据交换方法 | |
CN110532267A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170531 |
|
RJ01 | Rejection of invention patent application after publication |