CN106776072A - 消息推送方法及*** - Google Patents

消息推送方法及*** Download PDF

Info

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
Application number
CN201611170558.XA
Other languages
English (en)
Inventor
张贵文
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ctrip Travel Information Technology Shanghai Co Ltd
Original Assignee
Ctrip Travel Information Technology Shanghai Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ctrip Travel Information Technology Shanghai Co Ltd filed Critical Ctrip Travel Information Technology Shanghai Co Ltd
Priority to CN201611170558.XA priority Critical patent/CN106776072A/zh
Publication of CN106776072A publication Critical patent/CN106776072A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

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中任一项所述的消息推送***,其特征在于,所述外部设备为移动终端。
CN201611170558.XA 2016-12-16 2016-12-16 消息推送方法及*** Pending CN106776072A (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 浪潮软件集团有限公司 一种任务分配方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Title
夏露 等: "消息队列在智能优化算法中的应用", 《航空计算技术》 *
胡苏太等: "《英汉信息安全技术辞典》", 31 August 2004 *

Cited By (6)

* Cited by examiner, † Cited by third party
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