CN116521338A - 消息队列的管控方法、装置、计算机设备和存储介质 - Google Patents

消息队列的管控方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN116521338A
CN116521338A CN202310434966.5A CN202310434966A CN116521338A CN 116521338 A CN116521338 A CN 116521338A CN 202310434966 A CN202310434966 A CN 202310434966A CN 116521338 A CN116521338 A CN 116521338A
Authority
CN
China
Prior art keywords
task
data record
subtask
target data
processing
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
CN202310434966.5A
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.)
Runxin Commercial Investment Shenzhen Co ltd
Original Assignee
Runxin Commercial Investment Shenzhen 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 Runxin Commercial Investment Shenzhen Co ltd filed Critical Runxin Commercial Investment Shenzhen Co ltd
Priority to CN202310434966.5A priority Critical patent/CN116521338A/zh
Publication of CN116521338A publication Critical patent/CN116521338A/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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请涉及一种消息队列的管控方法、装置、计算机设备和存储介质。方法包括:接收对当前消息队列中目标任务的管控请求;获取目标任务的各个子任务的处理状态;根据各子任务的处理状态对各子任务中未处理的子任务创建目标数据记录,目标数据记录用于指示对各子任务中未处理的子任务进行对应的管控操作;将目标数据记录发送至对应的消费者,以便消费者根据目标数据记录对未处理的子任务执行管控操作。采用本方法能够对消息队列中正在排队中,还未处理的任务进行管控。

Description

消息队列的管控方法、装置、计算机设备和存储介质
技术领域
本申请涉及计算机技术领域,特别是涉及一种消息队列的管控方法、装置、计算机设备和存储介质。
背景技术
随着计算机技术的发展,出现了消息推送的技术,对于消息推送的方案,目前业界大部分采用消息队列的形式,将需要发送的信息放进一个队列中,由消费者完成消息的处理已经重试。
例如,在消息推送场景中,通常会使用通用的推送队列来推送不同场景、项目、人群范围的推送任务。然而,在面临复杂场景、复杂系统、网络等问题时,推送队列由于队列本身的特性,无法对于已经入队的任务进行调整,灵活性差,导致影响任务的处理效率。
发明内容
基于此,有必要针对上述技术问题,提供一种消息队列的管控方法、装置、计算机设备和存储介质。
一种消息队列的管控方法,其特征在于,方法包括:
接收对当前消息队列中目标任务的管控请求;
获取目标任务的各个子任务的处理状态;
根据各子任务的处理状态对各子任务中未处理的子任务创建目标数据记录,目标数据记录用于指示对各子任务中未处理的子任务进行对应的管控操作;
将目标数据记录发送至对应的消费者,以便消费者根据目标数据记录对未处理的子任务执行管控操作。
在其中一个实施例中,上述的根据各子任务的处理状态对各子任务中未处理的子任务创建目标数据记录,包括:
当管控请求为暂停请求时,对各子任务中未处理的子任务创建暂停处理的目标数据记录,目标数据记录用于指示对未处理的子任务暂停处理;
当管控请求为继续处理请求时,对各子任务中未处理的子任务创建继续处理的目标数据记录,目标数据记录用于指示对未处理的子任务继续处理;
当管控请求为关闭请求时,对各子任务中未处理的子任务创建关闭处理的目标数据记录,目标数据记录用于指示对未处理的子任务关闭处理操作。
在其中一个实施例中,上述的方法还包括:
当管控请求为继续处理请求时,删除各未处理的子任务对应的暂停处理的目标数据记录。
在其中一个实施例中,上述的方法还包括:
接收目标任务的发起请求;
获取空闲的消息队列,将目标任务分配至空闲的消息队列;
当不存在空闲的消息队列时,将目标任务分配至预设的等待队列;
当等待队列存满时,将目标任务分配至预设的扩容队列。
在其中一个实施例中,上述的目标任务为消息发送类任务,上述的子任务为将预设消息发送至预设用户群中的各用户,上述的方法还包括:
记录将预设消息发送至各用户的发送状态,得到各子任务的处理状态;
上述的处理状态包括未发送状态,当管控请求为暂停请求时,对各子任务中未处理的子任务创建暂停处理的目标数据记录,包括:
获取处理状态为未发送状态的子任务;
对各未发送状态的子任务创建暂停处理的目标数据记录。
在其中一个实施例中,上述的方法还包括:
当管控请求为暂停请求时,将目标数据记录发送至当前消息队列,以便当前消息队列根据暂停处理的目标数据记录对各子任务进行过滤;
将过滤后的各子任务推送至消费者。
在其中一个实施例中,上述的处理状态包括发送失败,上述的方法还包括:
获取发送失败的各子任务的任务标识;
将发送失败的各子任务的任务标识发送至消费者,以便消费者根据各子任务的任务标识对各发送失败的子任务执行重发。
一种消息队列的管控装置,其特征在于,装置包括:
接收模块,用于接收对当前消息队列中目标任务的管控请求;
获取模块,用于获取目标任务的各个子任务的处理状态;
创建模块,用于根据各子任务的处理状态对各子任务中未处理的子任务创建目标数据记录,目标数据记录用于指示对各子任务中未处理的子任务进行对应的管控操作;
发送模块,用于将目标数据记录发送至对应的消费者,以便消费者根据目标数据记录对未处理的子任务执行管控操作。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
接收对当前消息队列中目标任务的管控请求;
获取目标任务的各个子任务的处理状态;
根据各子任务的处理状态对各子任务中未处理的子任务创建目标数据记录,目标数据记录用于指示对各子任务中未处理的子任务进行对应的管控操作;
将目标数据记录发送至对应的消费者,以便消费者根据目标数据记录对未处理的子任务执行管控操作。
一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
接收对当前消息队列中目标任务的管控请求;
获取目标任务的各个子任务的处理状态;
根据各子任务的处理状态对各子任务中未处理的子任务创建目标数据记录,目标数据记录用于指示对各子任务中未处理的子任务进行对应的管控操作;
将目标数据记录发送至对应的消费者,以便消费者根据目标数据记录对未处理的子任务执行管控操作。
上述消息队列的管控方法、装置、计算机设备和存储介质,通过接收对当前消息队列中目标任务的管控请求;响应于该管控请求,对目标任务中还未处理的子任务创建用于指示管控操作的目标数据记录,将目标数据记录发送至对应的消费者,以便消费者根据目标数据记录对未处理的子任务执行管控操作。采用本申请的方案可以对消息队列中还未处理的任务进行管控,解决了传统技术中无法将正在排队的消息进行管控的问题。
附图说明
图1为一个实施例中消息队列的管控方法的应用环境图;
图2为一个实施例中消息队列的管控方法的流程示意图;
图3为一个实施例中根据各子任务的处理状态对各子任务中未处理的子任务创建目标数据记录的步骤细化流程图;
图4为一个实施例中为目标任务分配消息队列的流程示意图;
图5为一个实施例部署于服务器上的topic池的原理框图;
图6为一个实施例中任务发起的时序图;
图7为一个实施例中任务暂停的时序图;
图8为一个实施例中任务继续处理的时序图;
图9为一个实施例中任务关闭处理的时序图;
图10为一个实施例中消息队列的管控装置的结构框图;
图11为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
请参考图1,图1为本申请一示例性实施例提供的消息队列的管控方法的应用环境示意图。如图1所示,该应用环境中包括服务器100以及终端101,服务器100与终端101之间可以通过网络102实现可通信的连接,以实现本申请的消息队列的管控方法。
服务器100用于接收终端101发送的对当前消息队列中目标任务的管控请求;获取目标任务的各个子任务的处理状态;根据各子任务的处理状态对各子任务中未处理的子任务创建目标数据记录,目标数据记录用于指示对各子任务中未处理的子任务进行对应的管控操作;将目标数据记录发送至对应的消费者,以便消费者根据目标数据记录对未处理的子任务执行管控操作。其中,服务器100可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
终端101用于向服务器100发送对当前消息队列中目标任务的管控请求。终端101可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。
网络102用于实现终端101与服务器100之间的网络连接,具体的,网络102可以包括多种类型的有线或无线网络。
在一个实施例中,如图2所示,提供了一种消息队列的管控方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:
S11、接收对当前消息队列中目标任务的管控请求。
本申请中,上述的当前消息队列是指当前待管控的消息队列。具体地,该当前消息队列可以为kafka或者RocketMQ等。上述的目标任务是指当前消息队列中排队的任务之一。上述的管控请求是指终端发起的用于对目标任务的处理进度进行管控的请求。例如,管控目标任务的暂停处理、关闭处理或者继续处理等请求。
在一种实施例中,本申请的服务器中预先构建了topic(主题)池,该topic池中包括多个topic,各topic即为一个消息队列。该topic是指消息发布(Pub)者和订阅(Sub)者之间的传输中介。topic池中可以包括至少一个消息队列,上述的当前消息队列即为topic池中的消息队列之一。由topic池接收对当前消息队列中目标任务的管控请求,并执行对topic池各个消息队列的管控。
S12、获取目标任务的各个子任务的处理状态。
本申请中,上述的子任务是指目标任务的任务组成部分。示例性地,上述的目标任务为给指定人群发送优惠券,对应的其子任务为给指定人群中的各个用户发送优惠券。例如,指定人群为甲、乙以及丙,那么将优惠券发送给甲为其中一个子任务,将优惠券发送给乙为其中一个子任务,将优惠券发送给丙为其中一个子任务。
上述的处理状态是指任务的处理进度,例如,处理完成、处理中、未处理以及处理失败等状态。示例性地,当上述的目标任务为发送优惠券给指定人群时,上述的处理状态可以包括发送成功、未发送、发送中以及发送失败等。
S13、根据各子任务的处理状态对各子任务中未处理的子任务创建目标数据记录,目标数据记录用于指示对各子任务中未处理的子任务进行对应的管控操作。
本申请中,上述的目标数据记录是指用于描述对各子任务中未处理的子任务进行对应的管控操作的记录。换言之,目标数据记录中包含了用于指示对各子任务中未处理的子任务进行对应的管控操作的数据内容。
具体地,本申请预先创建了预设数据库,在该预设数据库中包括至少一个数据表,其中,可以包括推送任务表以及处理状态记录表。推送任务表用于记录各个待推送任务的相关信息。处理状态记录表用于实时记录各个任务的处理状态的处理状态记录表。在推送任务表中可以包括各个待推送任务的推送时间区间、推送人群信息、还可以包括其他的信息,例如,画像平台pageNum(页码),pageSize(页面尺寸)等查询条件,包含topic池选择具体topic的相关信息以供查询各个topic,如果是循环任务,每次循环都有一条对应的记录。
上述的处理状态记录表实时记录了各个任务的处理状态,具体包括各个任务下的各个子任务的处理状态。通过各个数据表可以记录每个发送动作的中间态,还可以作为任务处理的生命周期记录,保证任务不会重复处理以及漏处理。
当收到管控请求时,在数据表中创建对应的目标数据记录,以用于指示对各子任务中未处理的子任务进行对应的管控操作。换言之,在收到目标任务的管控请求时,在数据表中增加对应的数据记录,以对未处理的子任务进行标识。
进一步地,上述的管控操作是指对目标任务所做的操作,具体是指对目标任务中各子任务所做的操作。示例性地,上述的管控操作可以包括暂停处理、继续处理、重新处理以及关闭处理等操作。管控操作也可以根据实际需求设定为其他操作,在此不做具体限定。
S14、将目标数据记录发送至对应的消费者,以便消费者根据目标数据记录对未处理的子任务执行管控操作。
本申请中,上述的消费者是指当前消息队列中目标任务的消费者。本申请中预先将各任务存入topic池对应的消息队列,由消息队列将任务依次推送至消费者,由消费者对各任务进行处理。
当接收到管控请求时,提取管控请求所管控的目标任务的任务标识,根据任务标识获取目标任务的各子任务的处理状态,基于各子任务的处理状态获取未处理的子任务的任务标识,基于未处理的子任务的任务标识对各未处理的子任务创建对应于管控请求的目标数据记录,将该目标数据记录发送至对应的消费者,消费者根据目标数据记录对各未处理的子任务执行管控操作。
在其中一种实施例中,本申请采用共享型comsumer(消费者)线程池。具体地,本申请中的topic池以推送渠道为维度,topic消费者采用共享的线程池,即一个java线程池处理多个核心topic。对于不同的推送渠道,采用对应的线程池进行处理,线程池采用同一个handler。
请参考图3,在其中一个实施例中,上述的根据各子任务的处理状态对各子任务中未处理的子任务创建目标数据记录,可以包括:
S31、当管控请求为暂停请求时,对各子任务中未处理的子任务创建暂停处理的目标数据记录,目标数据记录用于指示对未处理的子任务暂停处理;
S32、当管控请求为继续处理请求时,对各子任务中未处理的子任务创建继续处理的目标数据记录,目标数据记录用于指示对未处理的子任务继续处理;
S33、当管控请求为关闭请求时,对各子任务中未处理的子任务创建关闭处理的目标数据记录,目标数据记录用于指示对未处理的子任务关闭处理操作。
本申请中,用户可以通过终端向服务器发送暂停当前消息队列中目标任务的处理请求。上述的暂停处理是指跳过处理目标任务中还未处理的子任务,处理下一个任务。或者,可以理解为过滤掉目标任务的剩下还未处理的子任务,处理下一个任务。
示例性地,当目标任务为将优惠活动信息发送给指定人群时,假如指定人群为100用户,当前发送到第30个用户(第30个用户已发送完),第31个用户还未发送,此时,需要对第31个用户以及其后面的各用户执行暂停发送(略过发送)。
具体地,上述的当管控请求为暂停请求时,对各子任务中未处理的子任务创建暂停处理的目标数据记录,目标数据记录用于指示对未处理的子任务暂停处理。
具体地,服务器预先创建了处理状态记录表,以记录各子任务的处理状态,当接收到暂停请求时,服务器对未处理的子任务创建暂停处理的标志,更新至上述的处理状态记录表。即在该处理状态记录表中添加一条目标数据记录,在该目标数据记录中记录了对未处理的子任务暂停处理的描述信息。
需要说明的是,服务器在创建目标数据记录的时候,可以通过添加暂停处理的标志、也可以通过添加暂停处理的标志,还可以通过添加其他可以描述对当前目标任务暂停处理的描述信息,以便消费者可以根据该描述信息对目标任务执行暂停处理或者暂停处理,具体的数据记录的描述内容可以根据实际需求设定,在此不做具体限定。
服务器预先为各用户创建了数据记录以记录各个用户接收优惠活动信息的状态,如是否发送完成、是否未发送以及是否发送失败等。在接收到暂停请求时,为还未发送的各用户创建一条新的暂停发送的目标数据记录。
获取到还未发送的50个用户对应的数据记录,对获取的数据记录增加暂停发送的目标数据记录,将暂停发送的目标数据记录对应添加至未发送的子任务对应的数据记录中。
进一步地,上述的继续处理是指对已暂停的目标任务执行继续处理。示例性地,当目标任务为将优惠活动信息发送给指定人群时,假如指定人群为100用户,该目标任务在发送到第30个用户(第30个用户已发送完)的时候被暂停发送,当前收到继续处理请求,服务器对第31个用户创建继续发送的标志更新至数据表,靖该数据表发送至消费者,以便消费者根据该数据表中更新的数据内容对第31个用户执行继续发送优惠活动信息。
当前发送到第30个用户第31个用户还未发送,此时,需要对第31个用户以及其后面的各用户执行暂停发送(略过发送)。
进一步地,上述的关闭请求是指对当前目标任务执行关闭。服务器接收到关闭请求时,对未处理的子任务创建目标数据记录,该目标数据记录可以为关闭处理的标志或者省略处理的标志,也可以是其他可以描述对目标任务执行关闭处理的信息,在此不做具体限定。
本申请通过该实施例,能够实现对消息队列中的任务进行暂停处理、继续处理以及关闭处理等编排操作,以实现对消息队列中各任务的管控。
在其中一个实施例中,上述的方法还可以包括:
当管控请求为继续处理请求时,删除各未处理的子任务对应的暂停处理的目标数据记录。
本申请中,上述的继续处理请求是指对已暂停的目标任务执行继续处理。在对已暂停的目标任务执行继续处理时,服务器除了可以创建新的目标数据记录,以更新覆盖原目标数据记录以外,服务器还可以通过删除原来的省略处理的目标数据记录,将删除后的数据表发送至消费者,消费者根据删除后的数据表执行对目标任务的继续处理。
本申请通过该实施方式,可以提供另一种对暂停请求的处理方案,提升方案的灵活性。
请参考图4,在其中一个实施例中,上述的方法还可以包括:
S41、接收目标任务的发起请求;
S42、获取空闲的消息队列,将目标任务分配至空闲的消息队列;
S43、当不存在空闲的消息队列时,将目标任务分配至预设的等待队列;
S44、当等待队列存满时,将目标任务分配至预设的扩容队列。
本申请中,终端可以向服务器发起目标任务,服务器接收到目标任务发起请求后,对目标任务执行校验,当校验通过后为目标任务分配合适的消息队列或者topic,在分配消息队列时,服务器先获取空闲的消息队列,将目标任务优先分配至对应的空闲的消息队列。当topic池中不存在空闲的消息队列时,将目标任务分配至预先设定的等待队列。当等待队列存满时,服务器获取预先设定的扩容队列,将目标任务分配至对应的扩容队列。
本申请通过该实施例可以在空闲的消息队列不足时,实现扩容,扩宽方案的适用范围。
在其中一个实施例中,上述的目标任务可以为消息发送类任务,上述的子任务为将预设消息发送至预设用户群中的各个用户,上述的方法还可以包括:
记录将预设消息发送至各用户的发送状态,得到各子任务的处理状态;
处理状态包括未发送状态,当管控请求为暂停请求时,对各子任务中未处理的子任务创建暂停处理的目标数据记录,包括:
获取处理状态为未发送状态的子任务;
对各未发送状态的子任务创建暂停处理的目标数据记录。
本申请中,上述的消息发送类任务是指将指定消息发送至指定的人群,或者,将指定的优惠券发送至指定人群等。上述的指定消息可以为优惠活动信息或者新品发布信息或者其他促销类信息等。
上述的发送状态是指消息发送的进度或者结果。例如,发送状态可以为发送成功、发送失败、发送中以及未发送等状态。
具体地,当目标任务开始进入消息队列时,服务器实时记录目标任务的处理状态,当消费者开始消费目标任务时,服务器修改处理状态为处理中,当消费者消费完成时,修改目标任务的处理状态为处理完成。其中,当目标任务在处理中时,服务器实时记录目标任务的各个子任务的处理状态。
具体地,当目标任务为消息发送类任务时,上述的处理状态记录表可以为发送记录表。在该发送记录表中,以任务id、topic名称、主键为维度记录每个用户的发送记录,当消息入队时,写入发送记录表,消费者开始消费时,修改发送记录表转态为处理中,消费者成功发送时,修改发送记录为发送成功。
示例性地,当目标任务为发送指定消息给指定用户群,服务器实时记录发送指定消息给各个用户的发送状态,例如,用户1已发送、用户2已发送、用户3为发送中以及用户4为未发送等。其中,发送指定消息给用户1为其中一个子任务,以此类推,发送消息给各个用户为一个子任务。
记录各个子任务的发送状态之后,当接收到管控请求时,如暂停请求时,基于记录的各个子任务的发送状态,获取未发送的子任务,对未发送的子任务创建目标数据记录,如创建暂停处理的标志。
本申请通过该实施例,可以将本方案应用于消息发送类的场景中,实现实时监控各个用户的消息发送情况,管控各个用户的消息发送情况。本申请中,服务器可以同时管控多个消息队列,通过管控多个消息队列的任务处理进度,从而实现限流或者并行处理多个任务,也可以通过管控多个消息队列,实现控制各消息队列的任务处理速度,灵活管控各消息队列。
在其中一个实施例中,上述的方法还可以包括:
当管控请求为暂停请求时,将目标数据记录发送至当前消息队列,以便当前消息队列根据暂停处理的目标数据记录对各子任务进行过滤;
将过滤后的各子任务推送至消费者。
一种可能的实施方式中,服务器上部署有topic池,该topic池中包括多个消息队列,各消息队列中存储了多个待推送的任务。topic池本身负责调度和分配任务,将推送任务分配给空闲的topic(消息队列),如果收到暂停、取消等请求时,使用redis进行记录,消费者根据redis记录暂停或过滤消息。
具体地,用户通过终端向服务器发起针对当前消息队列中目标任务的管控请求时,服务器基于该管控请求,对应创建目标数据记录,将该目标数据记录发送给消费者,并将该目标数据记录以通知的形式发送至当前消息队列。
当管控请求为暂停请求时,目标数据记录可以为暂停处理的标志,消息队列可以基于该目标数据记录对目标任务的各子任务进行过滤,过滤掉创建了暂停处理的标志的子任务,将过滤后的任务推送至消费者处理。
一种可能的应用场景中,当需要更换消息队列时,如将kafka替换成RocketMQ时,更换后的消息队列可以基于创建的目标数据记录对各任务执行过滤或者其他的操作。
本申请通过该实施例,可以实现将任务进行过滤,避免消息的重发。
在其中一个实施例中,上述的处理状态可以包括发送失败,上述的方法还可以包括:
获取发送失败的各子任务的任务标识;
将发送失败的各子任务的任务标识发送至消费者,以便消费者根据各子任务的任务标识对各发送失败的子任务执行重发。
其中,服务器中预先创建了发送记录表,发送记录表中记录了各个子任务的发送状态,同时消费者会实时同步发送失败或者发送成功的发送结果至发送记录表中。服务器实时扫描发送记录表,当扫描发现发送记录表中存在发送失败的子任务时,触发预先设定的全局定时任务,获取发送失败的各子任务的任务标识;将发送失败的各子任务的任务标识发送至消费者,以便消费者根据各子任务的任务标识对各发送失败的子任务执行重发。
本申请通过该实施例,可以实现对处理失败的各任务执行重新处理。本申请通过以上各个实施例,可以避免对各个任务的漏处理或者重复处理等情况。
请参考图5,图5为一种实施例中,部署于服务器上的topic池的原理框图。如图5所示,服务器上部署了topic池,topic池中预先创建了任务推送表,该任务推送表中包括至少一个待推送的任务。
topic池中包括多个topic,其中,包括20个核心topic以及50个候补topic,当核心topic排满时,获取对应的候补topic,用于扩容。在topic池中,核心topic1处于空闲状态、核心topic2处于暂停状态、核心topic3处于免打扰状态,该免打扰状态具体的免打扰时间区间为21:00至9:00暂停发送,核心topic4处于处理中状态。在topic池中,还包括多个候补topic,其中,候补topic1处于处理中,候补topic2处于处理中,候补topic3处于空闲状态,其他候补topic处于关闭状态。
根据topic池的原理框图可知,topic池可以配置动态候补topic数,还可以控制其中的topic的任务处理状态,如暂停、免打扰以及关闭等状态。
进一步地,topic池中还包括发送记录表,该发送记录表中记录了发送消息给各个用户的发送状态,如,发送成功、发送失败、发送中以及未发送等状态。当topic池中某个topic的任务出队消费时,则记录对应的状态到发送记录表中,消费者对任务的处理情况实时同步至发送记录表中,如发送成功或者发送失败的记录。
具体地,本实施例中,topic池以推送渠道为维度,topic消费者采用共享的线程池,即一个java线程池处理多个核心topic。对于不同的推送渠道,采用对应的线程池进行处理,线程池采用同一个handler。
进一步地,topic池能够实时扫描发送记录表中的发送状态,当存在发送失败的记录时,触发全局定时任务,将发送失败的任务的标识发送至消费者,以便消费者对发送失败的任务执行重新发送。
在一种可能的应用场景中,如图6所示,图6为一种实施例中,任务发起的时序图。如图6所示,用户可以通过终端向服务器发起任务,服务器上部署有topic池,topic池中包括至少一个消息队列,由topic池接收终端发起的任务。topic池接收任务后对任务进行校验,校验通过后为任务分配对应的topic,分配topic之后运行任务,即执行任务,将任务入消息队列,消息队列处理单个消息,即消息队列依次将各个入队的任务推送至处理渠道,该处理渠道即相当于上述的消费者。消费者处理完任务后返回处理结果至对应的消息队列,由消息队列再次返回处理完成的执行状态至topic池,topic池返回处理结束至终端。
在一种可能的应用场景中,如图7所示,图7为一种实施例中,任务暂停的时序图。如图7所示,用户可以通过终端向服务器发起目标任务的暂停请求,服务器上部署有topic池,topic池中包括至少一个消息队列,由topic池接收终端发起的暂停请求。topic池接收暂停请求后获取目标任务的各个子任务的处理状态,基于各子任务的处理状态获取未处理的子任务,对未处理的子任务创建略过标志的目标数据记录,将该创建的略过标志发送至处理渠道,以便处理渠道根据该略过标志对未处理的子任务暂停处理。并且,topic池还将略过标志通知给对应的消息队列,消息队列基于该略过标志处理目标任务中的单个消息(子任务)。处理渠道向对应的消息队列反馈暂停处理的结果,消息队列向topic池反馈暂停处理的结果,topic池向终端反馈暂停处理的结果。
在一种可能的应用场景中,如图8所示,图8为一种实施例中,任务继续处理的时序图。如图8所示,用户可以通过终端向服务器发起目标任务的继续处理请求,服务器上部署有topic池,topic池中包括至少一个消息队列,由topic池接收终端发起的继续处理请求。topic池接收继续处理请求后查询目标任务的处理状态,获取各个子任务的处理状态,获取各子任务中被暂停的子任务的任务标识,为各个被暂停的子任务创建继续处理的标志,将该标志发送至处理渠道。或者,获取各被暂停的子任务对应的数据记录,删除数据记录中暂停处理的标志,将删除后的数据记录发送至处理渠道,以便处理渠道根据删除后的数据记录,对各被暂停的子任务恢复继续处理。
在一种可能的应用场景中,如图9所示,图9为一种实施例中,任务关闭处理的时序图。如图9所示,用户可以通过终端向服务器发起目标任务的关闭请求,服务器上部署有topic池,topic池中包括至少一个消息队列,由topic池接收终端发起的关闭请求。topic池接收继续处理请求后查询目标任务的处理状态,获取各个子任务的处理状态,获取未处理的各子任务的任务标识,为各未处理的子任务创建关闭处理的标志或者省略处理的标志,将该标志发送至处理渠道,以便处理渠道根据该标志对未处理的子任务关闭处理。
在一个实施例中,如图10所示,提供了一种消息队列的管控装置,包括:接收模块11、获取模块12、创建模块13和发送模块14,其中:
接收模块11,用于接收对当前消息队列中目标任务的管控请求;
获取模块12,用于获取目标任务的各个子任务的处理状态;
创建模块13,用于根据各子任务的处理状态对各子任务中未处理的子任务创建目标数据记录,目标数据记录用于指示对各子任务中未处理的子任务进行对应的管控操作;
发送模块14,用于将目标数据记录发送至对应的消费者,以便消费者根据目标数据记录对未处理的子任务执行管控操作。
在其中一个实施例中,上述的创建模块13可以当管控请求为暂停请求时,对各子任务中未处理的子任务创建暂停处理的目标数据记录,目标数据记录用于指示对未处理的子任务暂停处理,当管控请求为继续处理请求时,对各子任务中未处理的子任务创建继续处理的目标数据记录,目标数据记录用于指示对未处理的子任务继续处理,当管控请求为关闭请求时,对各子任务中未处理的子任务创建关闭处理的目标数据记录,目标数据记录用于指示对未处理的子任务关闭处理操作。
在其中一个实施例中,上述的装置还包括删除模块(图未示),该删除模块可以当管控请求为继续处理请求时,删除各未处理的子任务对应的暂停处理的目标数据记录。
在其中一个实施例中,上述的装置还包括分配模块(图未示),该分配模块可以接收目标任务的发起请求,获取空闲的消息队列,将目标任务分配至空闲的消息队列,当不存在空闲的消息队列时,将目标任务分配至预设的等待队列,当等待队列存满时,将目标任务分配至预设的扩容队列。
在其中一个实施例中,上述的目标任务为消息发送类任务,子任务为将预设消息发送至预设用户群中的各用户,上述的创建模块13还可以记录将预设消息发送至各用户的发送状态,得到各子任务的处理状态,上述的处理状态包括未发送状态,上述的创建模块13还可以获取处理状态为未发送状态的子任务,对各未发送状态的子任务创建暂停处理的目标数据记录。
在其中一个实施例中,上述的创建模块13还可以当管控请求为暂停请求时,将目标数据记录发送至当前消息队列,以便当前消息队列根据暂停处理的目标数据记录对各子任务进行过滤,将过滤后的各子任务推送至消费者。
在其中一个实施例中,上述的处理状态包括发送失败,上述的装置还包括重发模块(图未示)该重发模块可以获取发送失败的各子任务的任务标识,将发送失败的各子任务的任务标识发送至消费者,以便消费者根据各子任务的任务标识对各发送失败的子任务执行重发。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图11所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储智能家居设备的运行数据等数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现消息队列的管控方法方法。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:接收对当前消息队列中目标任务的管控请求;获取目标任务的各个子任务的处理状态;根据各子任务的处理状态对各子任务中未处理的子任务创建目标数据记录,目标数据记录用于指示对各子任务中未处理的子任务进行对应的管控操作;将目标数据记录发送至对应的消费者,以便消费者根据目标数据记录对未处理的子任务执行管控操作。
在一个实施例中,处理器执行计算机程序实现上述的根据各子任务的处理状态对各子任务中未处理的子任务创建目标数据记录步骤时,具体实现以下步骤:
当管控请求为暂停请求时,对各子任务中未处理的子任务创建暂停处理的目标数据记录,目标数据记录用于指示对未处理的子任务暂停处理;
当管控请求为继续处理请求时,对各子任务中未处理的子任务创建继续处理的目标数据记录,目标数据记录用于指示对未处理的子任务继续处理;
当管控请求为关闭请求时,对各子任务中未处理的子任务创建关闭处理的目标数据记录,目标数据记录用于指示对未处理的子任务关闭处理操作。
在一个实施例中,处理器执行计算机程序时,具体还实现以下步骤:
当管控请求为继续处理请求时,删除各未处理的子任务对应的暂停处理的目标数据记录。
在一个实施例中,处理器执行计算机程序时,具体还实现以下步骤:
接收目标任务的发起请求;
获取空闲的消息队列,将目标任务分配至空闲的消息队列;
当不存在空闲的消息队列时,将目标任务分配至预设的等待队列;
当等待队列存满时,将目标任务分配至预设的扩容队列。
在一个实施例中,上述的目标任务为消息发送类任务,上述的子任务为将预设消息发送至预设用户群中的各用户,处理器执行计算机程序时,具体还实现以下步骤:
记录将预设消息发送至各用户的发送状态,得到各子任务的处理状态;
上述的处理状态包括未发送状态,处理器执行计算机程序实现上述的当管控请求为暂停请求时,对各子任务中未处理的子任务创建暂停处理的目标数据记录步骤时具体实现以下步骤:
获取处理状态为未发送状态的子任务;
对各未发送状态的子任务创建暂停处理的目标数据记录。
在一个实施例中,处理器执行计算机程序时,具体还实现以下步骤:
当管控请求为暂停请求时,将目标数据记录发送至当前消息队列,以便当前消息队列根据暂停处理的目标数据记录对各子任务进行过滤;
将过滤后的各子任务推送至消费者。
在一个实施例中,上述的处理状态包括发送失败,处理器执行计算机程序时,具体还实现以下步骤:
获取发送失败的各子任务的任务标识;
将发送失败的各子任务的任务标识发送至消费者,以便消费者根据各子任务的任务标识对各发送失败的子任务执行重发。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:接收对当前消息队列中目标任务的管控请求;获取目标任务的各个子任务的处理状态;根据各子任务的处理状态对各子任务中未处理的子任务创建目标数据记录,目标数据记录用于指示对各子任务中未处理的子任务进行对应的管控操作;将目标数据记录发送至对应的消费者,以便消费者根据目标数据记录对未处理的子任务执行管控操作。
在一个实施例中,计算机程序被处理器执行实现上述的根据各子任务的处理状态对各子任务中未处理的子任务创建目标数据记录步骤时,具体实现以下步骤:
当管控请求为暂停请求时,对各子任务中未处理的子任务创建暂停处理的目标数据记录,目标数据记录用于指示对未处理的子任务暂停处理;
当管控请求为继续处理请求时,对各子任务中未处理的子任务创建继续处理的目标数据记录,目标数据记录用于指示对未处理的子任务继续处理;
当管控请求为关闭请求时,对各子任务中未处理的子任务创建关闭处理的目标数据记录,目标数据记录用于指示对未处理的子任务关闭处理操作。
在一个实施例中,计算机程序被处理器执行时,具体还实现以下步骤:
当管控请求为继续处理请求时,删除各未处理的子任务对应的暂停处理的目标数据记录。
在一个实施例中,计算机程序被处理器执行时,具体还实现以下步骤:
接收目标任务的发起请求;
获取空闲的消息队列,将目标任务分配至空闲的消息队列;
当不存在空闲的消息队列时,将目标任务分配至预设的等待队列;
当等待队列存满时,将目标任务分配至预设的扩容队列。
在一个实施例中,上述的目标任务为消息发送类任务,上述的子任务为将预设消息发送至预设用户群中的各用户,计算机程序被处理器执行时,具体还实现以下步骤:
记录将预设消息发送至各用户的发送状态,得到各子任务的处理状态;
上述的处理状态包括未发送状态,计算机程序被处理器执行实现上述的当管控请求为暂停请求时,对各子任务中未处理的子任务创建暂停处理的目标数据记录步骤时具体实现以下步骤:
获取处理状态为未发送状态的子任务;
对各未发送状态的子任务创建暂停处理的目标数据记录。
在一个实施例中,计算机程序被处理器执行时,具体还实现以下步骤:
当管控请求为暂停请求时,将目标数据记录发送至当前消息队列,以便当前消息队列根据暂停处理的目标数据记录对各子任务进行过滤;
将过滤后的各子任务推送至消费者。
在一个实施例中,上述的处理状态包括发送失败,计算机程序被处理器执行时,具体还实现以下步骤:
获取发送失败的各子任务的任务标识;
将发送失败的各子任务的任务标识发送至消费者,以便消费者根据各子任务的任务标识对各发送失败的子任务执行重发。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种消息队列的管控方法,其特征在于,所述方法包括:
接收对当前消息队列中目标任务的管控请求;
获取所述目标任务的各个子任务的处理状态;
根据各所述子任务的处理状态对各所述子任务中未处理的子任务创建目标数据记录,所述目标数据记录用于指示对各所述子任务中未处理的子任务进行对应的管控操作;
将所述目标数据记录发送至对应的消费者,以便所述消费者根据所述目标数据记录对所述未处理的子任务执行所述管控操作。
2.根据权利要求1所述的方法,其特征在于,所述根据各所述子任务的处理状态对各所述子任务中未处理的子任务创建目标数据记录,包括:
当所述管控请求为暂停请求时,对各所述子任务中未处理的子任务创建暂停处理的目标数据记录,所述目标数据记录用于指示对所述未处理的子任务暂停处理;
当所述管控请求为继续处理请求时,对各所述子任务中未处理的子任务创建继续处理的目标数据记录,所述目标数据记录用于指示对所述未处理的子任务继续处理;
当所述管控请求为关闭请求时,对各所述子任务中未处理的子任务创建关闭处理的目标数据记录,所述目标数据记录用于指示对所述未处理的子任务关闭处理操作。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
当所述管控请求为继续处理请求时,删除各所述未处理的子任务对应的暂停处理的目标数据记录。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收所述目标任务的发起请求;
获取空闲的消息队列,将所述目标任务分配至所述空闲的消息队列;
当不存在所述空闲的消息队列时,将所述目标任务分配至预设的等待队列;
当所述等待队列存满时,将所述目标任务分配至预设的扩容队列。
5.根据权利要求1所述的方法,其特征在于,所述目标任务为消息发送类任务,所述子任务为将预设消息发送至预设用户群中的各用户,所述方法还包括:
记录将所述预设消息发送至各用户的发送状态,得到各所述子任务的处理状态;
所述处理状态包括未发送状态,所述当所述管控请求为暂停请求时,对各所述子任务中未处理的子任务创建暂停处理的目标数据记录,包括:
获取所述处理状态为所述未发送状态的子任务;
对各所述未发送状态的子任务创建暂停处理的目标数据记录。
6.根据权利要求2所述的方法,其特征在于,所述方法还包括:
当所述管控请求为暂停请求时,将所述目标数据记录发送至所述当前消息队列,以便所述当前消息队列根据所述暂停处理的目标数据记录对各所述子任务进行过滤;
将过滤后的各所述子任务推送至所述消费者。
7.根据权利要求5所述的方法,其特征在于,所述处理状态包括发送失败,所述方法还包括:
获取发送失败的各所述子任务的任务标识的任务标识;
将发送失败的各所述子任务的任务标识发送至消费者,以便所述消费者根据各所述子任务的任务标识对各所述发送失败的子任务执行重发。
8.一种消息队列的管控装置,其特征在于,所述装置包括:
接收模块,用于接收对当前消息队列中目标任务的管控请求;
获取模块,用于获取所述目标任务的各个子任务的处理状态;
创建模块,用于根据各所述子任务的处理状态对各所述子任务中未处理的子任务创建目标数据记录,所述目标数据记录用于指示对各所述子任务中未处理的子任务进行对应的管控操作;
发送模块,用于将所述目标数据记录发送至对应的消费者,以便所述消费者根据所述目标数据记录对所述未处理的子任务执行所述管控操作。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
CN202310434966.5A 2023-04-21 2023-04-21 消息队列的管控方法、装置、计算机设备和存储介质 Pending CN116521338A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310434966.5A CN116521338A (zh) 2023-04-21 2023-04-21 消息队列的管控方法、装置、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310434966.5A CN116521338A (zh) 2023-04-21 2023-04-21 消息队列的管控方法、装置、计算机设备和存储介质

Publications (1)

Publication Number Publication Date
CN116521338A true CN116521338A (zh) 2023-08-01

Family

ID=87393423

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310434966.5A Pending CN116521338A (zh) 2023-04-21 2023-04-21 消息队列的管控方法、装置、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN116521338A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117544677A (zh) * 2023-11-08 2024-02-09 苏州盖雅信息技术有限公司 一种消息队列topic复用的实现方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117544677A (zh) * 2023-11-08 2024-02-09 苏州盖雅信息技术有限公司 一种消息队列topic复用的实现方法
CN117544677B (zh) * 2023-11-08 2024-05-17 苏州盖雅信息技术有限公司 一种消息队列topic复用的实现方法、系统、装置及存储介质

Similar Documents

Publication Publication Date Title
CN112000741B (zh) 内外网数据交换系统、方法、装置、计算机设备和介质
US9164748B2 (en) Information backup method and apparatus
CN111143133B (zh) 虚拟机备份方法和备份虚拟机恢复方法
CN109697112B (zh) 分布式集约化一站式作业系统和实现方法
CN109361525B (zh) 重启分布式部署多服务的方法、装置、控制终端及介质
CN108388478B (zh) 日志数据处理方法和系统
CN116521338A (zh) 消息队列的管控方法、装置、计算机设备和存储介质
CN111159233A (zh) 分布式缓存方法、系统、计算机设备以及存储介质
US9298765B2 (en) Apparatus and method for handling partially inconsistent states among members of a cluster in an erratic storage network
CN114356521A (zh) 任务调度方法、装置、电子设备及存储介质
CN111966283A (zh) 一种基于企业级超算场景的客户端多级缓存方法及系统
CN110413398B (zh) 任务调度方法、装置、计算机设备和存储介质
CN106547566B (zh) 通讯服务进程池管理方法及系统
CN111447136B (zh) 消息推送方法、装置、计算机设备和存储介质
CN112948096A (zh) 一种批量调度方法、装置和设备
CN113238849A (zh) 定时任务处理方法、装置、存储介质与电子设备
US20160359953A1 (en) Migration enhanced by presence, instant messaging, and last log-on time
US10248314B2 (en) Migrate nickname cache for email systems and devices
CN113392081B (zh) 数据处理系统及方法
CN116070850A (zh) 客户关系信息处理方法、装置、设备和存储介质
CN111813575B (zh) 一种基于容器服务的定制化清理方法及系统
CN111324668B (zh) 数据库数据同步处理方法、装置及存储介质
CN110908808B (zh) 一种控制api调用资源的方法和装置
JP2019087098A (ja) プログラム及び情報処理装置
CN112597227A (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