CN116643870B - 一种长时任务分发处理方法、系统、装置及可读存储介质 - Google Patents

一种长时任务分发处理方法、系统、装置及可读存储介质 Download PDF

Info

Publication number
CN116643870B
CN116643870B CN202310903977.3A CN202310903977A CN116643870B CN 116643870 B CN116643870 B CN 116643870B CN 202310903977 A CN202310903977 A CN 202310903977A CN 116643870 B CN116643870 B CN 116643870B
Authority
CN
China
Prior art keywords
message
resource pool
pulling
local
consumption resource
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
Application number
CN202310903977.3A
Other languages
English (en)
Other versions
CN116643870A (zh
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.)
North Health Medical Big Data Technology Co ltd
Original Assignee
North Health Medical Big Data Technology 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 North Health Medical Big Data Technology Co ltd filed Critical North Health Medical Big Data Technology Co ltd
Priority to CN202310903977.3A priority Critical patent/CN116643870B/zh
Publication of CN116643870A publication Critical patent/CN116643870A/zh
Application granted granted Critical
Publication of CN116643870B publication Critical patent/CN116643870B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation
    • 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
    • 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
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明提出的一种长时任务分发处理方法、系统、装置及可读存储介质,属于计算机技术领域,所述方法包括:利用消息拉取线程从消息队列中拉取消息到本地,并将相应的任务状态更新为处理状态;将消息放入本地消费资源池中;当本地消费资源池中有空闲线程时,利用空闲线程进行业务的逻辑执行,并向消息队列上报执行成功信息;当本地消费资源池中没有空闲线程时,则根据拉取消息的数目执行相应的重试策略。本发明通过将消息的拉取与消费进行本地解耦,并补充以异常重试策略,从而提高了长时任务处理的TPS。

Description

一种长时任务分发处理方法、系统、装置及可读存储介质
技术领域
本发明涉及计算机技术领域,更具体的说是涉及一种长时任务分发处理方法、系统、装置及可读存储介质。
背景技术
目前,普遍采用生产者 - 消费者(Producer - Consumer)模式进行消息的分发处理。在此种模式中,生产者(Producer)指的是生成数据的线程,消费者(Consumer)指的是使用数据的线程。具体来说以消息队列做为媒介,对消息进行转发,由不同的消费者(Consumer)进行相应消息对应的业务逻辑处理。
作为消费者本身,由于其业务处理的过程和接收消息的过程是同步的,这就导致了业务逻辑的处理一旦需要的时间比较长(以下将该类消息称为长时任务),就会阻塞消息的接收。
目前,在很多消息中间件中,消息在消息队列中的分布就是不均的,而由这种不均,再加上消息业务逻辑的处理速度的影响,会导致整个消息的消费情况分布非常不均匀,造成机器性能和资源的浪费。但是,从消息中间件的角度进行分配不均的解决,需要对消息中间件的实现原理有一定了解,有一定的学习成本。
因此,采用现有技术进行长时任务的分发处理,可能会导致整个消息队列的服务吞吐量(TPS)非常低,很快就会达到性能瓶颈。为了克服这种性能瓶颈,只是简单的增加机器可能并不能改善这点,甚至可能会引发比较严重的线上问题。如在某种场景下,队列中的每个消息的消费都需要大约20至30秒的时间,那么只要有一个消息在消费中,就可能导致整个队列中的其他任务都被阻塞而无法被处理;这种情况下,假设消息队列的消费只能由一台机器进行,那么即使增加机器数量,也无法处理这些被阻塞的消息。
可见,如何有效的提高长时任务处理的TPS,是我们亟待解决的问题。
发明内容
针对以上问题,本发明的目的在于提供一种长时任务分发处理方法、系统、装置及可读存储介质,通过将消息的拉取与消费进行本地解耦,并补充以异常重试策略,从而提高了长时任务处理的TPS。
本发明为实现上述目的,通过以下技术方案实现:一种长时任务分发处理方法,包括:
利用消息拉取线程从消息队列中拉取消息到本地,并将相应的任务状态更新为处理状态;
将消息放入本地消费资源池中;
当本地消费资源池中有空闲线程时,利用空闲线程进行业务的逻辑执行,并向消息队列上报执行成功信息;
当本地消费资源池中没有空闲线程时,则根据拉取消息的数目执行相应的重试策略。
进一步,所述利用消息拉取线程从消息队列中拉取消息到本地,包括:
利用消息拉取线程从消息队列中拉取一条消息到本地;
拉取完成后,暂停拉取操作50ms。
进一步,所述根据拉取消息的数目执行相应的重试策略,包括如下步骤:
步骤1:暂停拉取操作50ms;
步骤2:判断本地消费资源池中是否有空闲线程;若是,则执行步骤3,否则执行步骤1:
步骤3:利用空闲线程进行业务的逻辑执行,并向消息队列上报执行成功信息。
进一步,所述利用消息拉取线程从消息队列中拉取消息到本地,包括:
利用消息拉取线程从消息队列中拉取N条消息到本地;其中,N>1。
进一步,所述将消息放入本地消费资源池中,包括:
将N条消息逐一放入本地消费资源池中。
进一步,所述当本地消费资源池中没有空闲线程时,则根据拉取消息的数目执行相应的重试策略,包括:
当本地消费资源池中没有空闲线程时,触发RejectedExecutionException异常;
响应于捕获RejectedExecutionException异常后,消息拉取线程重新将此条消息放入本地消费资源池中;
当本地消费资源池中有空闲线程时,利用空闲线程进行业务的逻辑执行,并向消息队列上报执行成功信息;
当本地消费资源池中没有空闲线程时,继续触发RejectedExecutionException异常;
当RejectedExecutionException异常的触发次数达到设定值时,在消息队列中将相应的任务状态更新为初始状态。
进一步,所述消息队列MQ架构下的Topic队列。
相应的,本发明还公开了一种长时任务分发处理系统,包括:
消息拉取单元,用于利用消息拉取线程从消息队列中拉取消息到本地,并将相应的任务状态更新为处理状态;
消息注入单元,用于将消息放入本地消费资源池中;
执行单元,用于当本地消费资源池中有空闲线程时,利用空闲线程进行业务的逻辑执行,并向消息队列上报执行成功信息;
重试单元,用于当本地消费资源池中没有空闲线程时,则根据拉取消息的数目执行相应的重试策略。
相应的,本发明公开了一种长时任务分发处理装置,包括:
存储器,用于存储长时任务分发处理程序;
处理器,用于执行所述长时任务分发处理程序时实现如上文任一项所述长时任务分发处理方法的步骤。
相应的,本发明公开了一种可读存储介质,所述可读存储介质上存储有长时任务分发处理程序,所述长时任务分发处理程序被处理器执行时实现如上文任一项所述长时任务分发处理方法的步骤。
对比现有技术,本发明有益效果在于:本发明公开了一种长时任务分发处理方法、系统、装置及可读存储介质,实现了将消息的拉取与消费进行本地解耦,并补充以异常重试策略,有效的提高了长时任务处理的TPS。本发明能够充分利用系统资源,提高了任务的并发数量,并具备较高的容错性,通过使业务逻辑的处理与消息的接收进行解耦,从而解决了由于慢业务导致的消息队列积压问题和消息在消息队列中分配不均导致的资源浪费。
由此可见,本发明与现有技术相比,具有突出的实质性特点和显著的进步,其实施的有益效果也是显而易见的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1是本发明的实施例一的方法流程图;
图2是本发明的实施例二的方法流程图;
图3是本发明的实施例三的方法流程图;
图4是本发明的实施例四的系统结构图。
图中,1、消息拉取单元;2、消息注入单元;3、执行单元;4、重试单元。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一:
如图1所示,本实施例提供了一种长时任务分发处理方法,包括如下步骤:
S101:利用消息拉取线程从消息队列中拉取消息到本地,并将相应的任务状态更新为处理状态。
其中,消息拉取线程即Consumer线程。消息队列采用 MQ架构的Topic队列中,如果MQ可配置,那么可以选择拉取1条消息或者按照默认消息数目拉取。
S102:将消息放入本地消费资源池中。
其中,本地消费资源池需要预先进行初始化,这里可以使用线程池,初始化一定数量的线程数,用于在拉取消息后可以直接启动线程进行消费。实际的线程数可以根据实际场景与机器配置不同进行不同配置。
S103:当本地消费资源池中有空闲线程时,利用空闲线程进行业务的逻辑执行,并向消息队列上报执行成功信息。
其中,上报的执行成功信息的目的在于为了使消息队列认为该消息已被正常消费,避免超时引发消息重试。
S104:当本地消费资源池中没有空闲线程时,则根据拉取消息的数目执行相应的重试策略。
实施例二:
基于实施例一,如图2所示,本实施例还提供了一种长时任务分发处理方法,包括如下步骤:
S201:利用消息拉取线程从消息队列中拉取一条消息到本地。
S202:拉取完成后,暂停拉取操作50ms。
S203:判断本地消费资源池中是否有空闲线程;若是,则执行步骤S204,否则执行步骤S202:
S204:将消息放入本地消费资源池中,利用空闲线程进行业务的逻辑执行,并向消息队列上报执行成功信息。
本实施例适用于每次只拉取一条消息的场景,当消息拉取线程每次仅从从消息队列中拉取一条消息到本地是,拉取完成后消息拉取线程将睡眠50ms,睡眠期间拉取消息的操作将会被阻塞,睡眠后会继续查看本地消费资源池是否有空闲线程,若没有空闲线程,重复以上步骤,若有空闲线程,则将任务放入本地消费资源池中执行。
实施例三:
基于实施例一,如图3所示,本实施例还提供了一种长时任务分发处理方法,包括如下步骤:
S301:利用消息拉取线程从消息队列中拉取5条消息到本地,并将相应的任务状态更新为处理状态。
S302:将5条消息逐一放入本地消费资源池中。
S303:当本地消费资源池中有空闲进程时,利用空闲线程进行业务的逻辑执行,并向消息队列上报执行成功信息。
S304:当本地消费资源池中没有空闲进程时,触发RejectedExecutionException异常。
S305:捕获RejectedExecutionException异常后,记录异常次数a。
S306:判断异常次数a是否小于设定值A;若是,则执行步骤S307;若否,则执行步骤S308。
S307:通过消息拉取线程重新将此条消息放入本地消费资源池中,并执行步骤S304。
S308:在消息队列中将相应的任务状态更新为初始状态。
本实施例适用于每次拉取多条消息的场景,若每次拉取多条消息,则不对空闲线程数进行判断,而是循环将消息放入资源池中,若资源池已满,将触发RejectedExecutionException异常。由于所依赖的MQ本身支持异常重试策略,那么在捕获该异常后,直接将异常继续向上抛出到MQ层面,由MQ进行异常重试逻辑,即通过消息拉取线程反复多次尝试将此条消息放入本地消费资源池中。其中,重试的次数需要进行预先设置。如果到达重试次数后仍然无法进行业务的逻辑执行,即异常触发次数已经达到重试次数,此时需要在消息队列中将相应的任务状态更新为初始状态,依赖系统的MQ发送机制进行MQ重发。
实施例四:
如图4所示,本发明还公开了一种长时任务分发处理系统,包括:消息拉取单元1、消息注入单元2、执行单元3和重试单元4。
消息拉取单元1,用于利用消息拉取线程从消息队列中拉取消息到本地,并将相应的任务状态更新为处理状态。
在具体实施方式中,消息拉取单元1具体用于:利用消息拉取线程从消息队列中拉取一条消息到本地;拉取完成后,暂停拉取操作50ms。
在具体实施方式中,消息拉取单元1具体用于:利用消息拉取线程从消息队列中拉取N条消息到本地;其中,N>1。
消息注入单元2,用于将消息放入本地消费资源池中。
在具体实施方式中,消息注入单元2具体用于:将N条消息逐一放入本地消费资源池中。
执行单元3,用于当本地消费资源池中有空闲线程时,利用空闲线程进行业务的逻辑执行,并向消息队列上报执行成功信息。
重试单元4,用于当本地消费资源池中没有空闲线程时,则根据拉取消息的数目执行相应的重试策略。
在具体实施方式中,重试单元4具体用于执行如下步骤:
步骤1:暂停拉取操作50ms;
步骤2:判断本地消费资源池中是否有空闲线程;若是,则执行步骤3,否则执行步骤1:
步骤3:利用空闲线程进行业务的逻辑执行,并向消息队列上报执行成功信息。
在具体实施方式中,重试单元4具体用于:
当本地消费资源池中没有空闲线程时,触发RejectedExecutionException异常;
响应于捕获RejectedExecutionException异常后,消息拉取线程重新将此条消息放入本地消费资源池中;
当本地消费资源池中有空闲线程时,利用空闲线程进行业务的逻辑执行,并向消息队列上报执行成功信息;
当本地消费资源池中没有空闲线程时,继续触发RejectedExecutionException异常;
当RejectedExecutionException异常的触发次数达到设定值时,在消息队列中将相应的任务状态更新为初始状态。
实施例五:
本实施例公开了一长时任务分发处理装置,包括处理器和存储器;其中,所述处理器执行所述存储器中保存的长时任务分发处理程序时实现以下步骤:
1、利用消息拉取线程从消息队列中拉取消息到本地,并将相应的任务状态更新为处理状态。
2、将消息放入本地消费资源池中。
3、当本地消费资源池中有空闲线程时,利用空闲线程进行业务的逻辑执行,并向消息队列上报执行成功信息。
4、当本地消费资源池中没有空闲线程时,则根据拉取消息的数目执行相应的重试策略。
进一步的,本实施例中的长时任务分发处理装置,还可以包括:
输入接口,用于获取外界导入的长时任务分发处理程序,并将获取到的长时任务分发处理程序保存至所述存储器中,还可以用于获取外界终端设备传输的各种指令和参数,并传输至处理器中,以便处理器利用上述各种指令和参数展开相应的处理。本实施例中,所述输入接口具体可以包括但不限于USB接口、串行接口、语音输入接口、指纹输入接口、硬盘读取接口等。
输出接口,用于将处理器产生的各种数据输出至与其相连的终端设备,以便于与输出接口相连的其他终端设备能够获取到处理器产生的各种数据。本实施例中,所述输出接口具体可以包括但不限于USB接口、串行接口等。
通讯单元,用于在长时任务分发处理装置和外部服务器之间建立远程通讯连接,以便于长时任务分发处理装置能够将镜像文件挂载到外部服务器中。本实施例中,通讯单元具体可以包括但不限于基于无线通讯技术或有线通讯技术的远程通讯单元。
键盘,用于获取用户通过实时敲击键帽而输入的各种参数数据或指令。
显示器,用于运行长时任务分发处理过程的相关信息进行实时显示。
鼠标,可以用于协助用户输入数据并简化用户的操作。
实施例六:
本实施例还公开了一种可读存储介质,这里所说的可读存储介质包括随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动硬盘、CD-ROM或技术领域内所公知的任意其他形式的存储介质。可读存储介质中存储有长时任务分发处理程序,所述长时任务分发处理程序被处理器执行时实现以下步骤:
1、利用消息拉取线程从消息队列中拉取消息到本地,并将相应的任务状态更新为处理状态。
2、将消息放入本地消费资源池中。
3、当本地消费资源池中有空闲线程时,利用空闲线程进行业务的逻辑执行,并向消息队列上报执行成功信息。
4、当本地消费资源池中没有空闲线程时,则根据拉取消息的数目执行相应的重试策略。
综上所述,本发明通过将消息的拉取与消费进行本地解耦,并补充以异常重试策略,从而提高了长时任务处理的TPS。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的方法而言,由于其与实施例公开的系统相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统、系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,系统或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。
同理,在本发明各个实施例中的各处理单元可以集成在一个功能模块中,也可以是各个处理单元物理存在,也可以两个或两个以上处理单元集成在一个功能模块中。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的长时任务分发处理方法、系统、装置及可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

Claims (7)

1.一种长时任务分发处理方法,其特征在于,包括:
利用消息拉取线程从消息队列中拉取消息到本地,并将相应的任务状态更新为处理状态;
将消息放入本地消费资源池中;
当本地消费资源池中有空闲线程时,利用空闲线程进行业务的逻辑执行,并向消息队列上报执行成功信息;
当本地消费资源池中没有空闲线程时,则根据拉取消息的数目执行相应的重试策略;
所述利用消息拉取线程从消息队列中拉取消息到本地,包括:
利用消息拉取线程从消息队列中拉取N条消息到本地;其中,N>1;
所述将消息放入本地消费资源池中,包括:
将N条消息逐一放入本地消费资源池中;
所述当本地消费资源池中没有空闲线程时,则根据拉取消息的数目执行相应的重试策略,包括:
当本地消费资源池中没有空闲线程时,触发RejectedExecutionException异常;响应于捕获RejectedExecutionException异常后,消息拉取线程重新将此条消息放入本地消费资源池中;
当本地消费资源池中有空闲线程时,利用空闲线程进行业务的逻辑执行,并向消息队列上报执行成功信息;
当本地消费资源池中没有空闲线程时,继续触发RejectedExecutionException异常;
当RejectedExecutionException异常的触发次数达到设定值时,在消息队列中将相应的任务状态更新为初始状态。
2.根据权利要求1所述的长时任务分发处理方法,其特征在于,所述利用消息拉取线程从消息队列中拉取消息到本地,包括:
利用消息拉取线程从消息队列中拉取一条消息到本地;
拉取完成后,暂停拉取操作50ms。
3.根据权利要求2所述的长时任务分发处理方法,其特征在于,所述根据拉取消息的数目执行相应的重试策略,包括如下步骤:
步骤1:暂停拉取操作50ms;
步骤2:判断本地消费资源池中是否有空闲线程;若是,则执行步骤3,否则执行步骤1:
步骤3:利用空闲线程进行业务的逻辑执行,并向消息队列上报执行成功信息。
4.根据权利要求1所述的长时任务分发处理方法,其特征在于,所述消息队列MQ架构下的Topic队列。
5.一种长时任务分发处理系统,其特征在于,包括:
消息拉取单元,用于利用消息拉取线程从消息队列中拉取消息到本地,并将相应的任务状态更新为处理状态;
消息注入单元,用于将消息放入本地消费资源池中;
执行单元,用于当本地消费资源池中有空闲线程时,利用空闲线程进行业务的逻辑执行,并向消息队列上报执行成功信息;
重试单元,用于当本地消费资源池中没有空闲线程时,则根据拉取消息的数目执行相应的重试策略;
所述消息拉取单元具体用于:利用消息拉取线程从消息队列中拉取N条消息到本地;其中,N>1;
所述消息注入单元具体用于:将N条消息逐一放入本地消费资源池中;
所述重试单元具体用于:
当本地消费资源池中没有空闲线程时,触发RejectedExecutionException异常;响应于捕获RejectedExecutionException异常后,消息拉取线程重新将此条消息放入本地消费资源池中;
当本地消费资源池中有空闲线程时,利用空闲线程进行业务的逻辑执行,并向消息队列上报执行成功信息;
当本地消费资源池中没有空闲线程时,继续触发RejectedExecutionException异常;
当RejectedExecutionException异常的触发次数达到设定值时,在消息队列中将相应的任务状态更新为初始状态。
6.一种长时任务分发处理装置,其特征在于,包括:
存储器,用于存储长时任务分发处理程序;
处理器,用于执行所述长时任务分发处理程序时实现如权利要求1至4任一项权利要求所述的长时任务分发处理方法的步骤。
7.一种可读存储介质,其特征在于:所述可读存储介质上存储有长时任务分发处理程序,所述长时任务分发处理程序被处理器执行时实现如权利要求1至4任一项权利要求所述的长时任务分发处理方法的步骤。
CN202310903977.3A 2023-07-24 2023-07-24 一种长时任务分发处理方法、系统、装置及可读存储介质 Active CN116643870B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310903977.3A CN116643870B (zh) 2023-07-24 2023-07-24 一种长时任务分发处理方法、系统、装置及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310903977.3A CN116643870B (zh) 2023-07-24 2023-07-24 一种长时任务分发处理方法、系统、装置及可读存储介质

Publications (2)

Publication Number Publication Date
CN116643870A CN116643870A (zh) 2023-08-25
CN116643870B true CN116643870B (zh) 2023-11-10

Family

ID=87625120

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310903977.3A Active CN116643870B (zh) 2023-07-24 2023-07-24 一种长时任务分发处理方法、系统、装置及可读存储介质

Country Status (1)

Country Link
CN (1) CN116643870B (zh)

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105306552A (zh) * 2015-09-30 2016-02-03 中国科学院计算技术研究所 一种基于消息队列的消费均衡方法及系统
CN107295045A (zh) * 2016-03-31 2017-10-24 阿里巴巴集团控股有限公司 一种消息处理方法及装置
US10361985B1 (en) * 2016-09-22 2019-07-23 Amazon Technologies, Inc. Message processing using messaging services
CN110659184A (zh) * 2019-09-23 2020-01-07 北京百度网讯科技有限公司 健康状态检查方法、装置及系统
CN113535420A (zh) * 2020-04-20 2021-10-22 北京沃东天骏信息技术有限公司 一种消息处理方法和装置
CN114356609A (zh) * 2022-01-10 2022-04-15 政采云有限公司 一种消息消费方法及消息系统
CN114490112A (zh) * 2021-12-20 2022-05-13 阿里巴巴(中国)有限公司 消息处理方法、设备及系统
CN115328664A (zh) * 2022-10-11 2022-11-11 苏州万店掌网络科技有限公司 一种消息消费方法、装置、设备及介质
CN115454667A (zh) * 2022-08-31 2022-12-09 浪潮软件集团有限公司 基于消息队列的并发远程调用系统及方法
CN115576719A (zh) * 2022-11-02 2023-01-06 神策网络科技(北京)有限公司 一种数据处理方法、装置、智能终端及存储介质
CN115981893A (zh) * 2023-01-16 2023-04-18 长城汽车股份有限公司 消息队列任务处理方法、装置、服务器及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2516852A (en) * 2013-08-01 2015-02-11 Ibm Consuming ordered streams of messages in a message oriented middleware

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105306552A (zh) * 2015-09-30 2016-02-03 中国科学院计算技术研究所 一种基于消息队列的消费均衡方法及系统
CN107295045A (zh) * 2016-03-31 2017-10-24 阿里巴巴集团控股有限公司 一种消息处理方法及装置
US10361985B1 (en) * 2016-09-22 2019-07-23 Amazon Technologies, Inc. Message processing using messaging services
CN110659184A (zh) * 2019-09-23 2020-01-07 北京百度网讯科技有限公司 健康状态检查方法、装置及系统
CN113535420A (zh) * 2020-04-20 2021-10-22 北京沃东天骏信息技术有限公司 一种消息处理方法和装置
CN114490112A (zh) * 2021-12-20 2022-05-13 阿里巴巴(中国)有限公司 消息处理方法、设备及系统
CN114356609A (zh) * 2022-01-10 2022-04-15 政采云有限公司 一种消息消费方法及消息系统
CN115454667A (zh) * 2022-08-31 2022-12-09 浪潮软件集团有限公司 基于消息队列的并发远程调用系统及方法
CN115328664A (zh) * 2022-10-11 2022-11-11 苏州万店掌网络科技有限公司 一种消息消费方法、装置、设备及介质
CN115576719A (zh) * 2022-11-02 2023-01-06 神策网络科技(北京)有限公司 一种数据处理方法、装置、智能终端及存储介质
CN115981893A (zh) * 2023-01-16 2023-04-18 长城汽车股份有限公司 消息队列任务处理方法、装置、服务器及存储介质

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
ITXC:一种基于事务消息的分布式事务方案;彭亮;胡忠顺;邬来军;;电信技术(第05期);全文 *
Michael Schmid.Response Time Analysis of Parallel Real-Time DAG Tasks Scheduled by Thread Pools.RTNS '21: Proceedings of the 29th International Conference on Real-Time Networks and Systems.2021,全文. *
分布式数据流计算系统的数据缓存技术综述;袁旭初;付国;毕继泽;张岩峰;聂铁铮;谷峪;鲍玉斌;于戈;;大数据(第03期);全文 *
基于消息的气象服务数据加工流水线设计与应用;宋瑛瑛;李雁鹏;陈正廷;凌柏;冯宇星;曹宇钊;;气象科技进展(第06期);全文 *

Also Published As

Publication number Publication date
CN116643870A (zh) 2023-08-25

Similar Documents

Publication Publication Date Title
CN107729139B (zh) 一种并发获取资源的方法和装置
CN110737534B (zh) 任务的处理方法、装置和服务器
US8347021B1 (en) Storing application messages
CN110300067A (zh) 队列调整方法、装置、设备及计算机可读存储介质
CN111124668B (zh) 内存释放方法、装置、存储介质及终端
US9049164B2 (en) Dynamic message retrieval by subdividing a message queue into sub-queues
CN112395097A (zh) 一种消息处理方法、装置、设备和存储介质
CN110610376A (zh) 行为数据的响应方法、装置、计算机设备及存储介质
CN105930249B (zh) 应用监控方法和装置
CN110333916A (zh) 请求消息处理方法、装置、计算机系统及可读存储介质
CN110442819A (zh) 数据处理方法、装置、存储介质及终端
CN116643870B (zh) 一种长时任务分发处理方法、系统、装置及可读存储介质
CN110515749B (zh) 信息发送的队列调度的方法、装置、服务器和存储介质
CN113190427A (zh) 卡顿监控方法、装置、电子设备及存储介质
CN111966508A (zh) 一种消息的批量发送方法、装置、计算机设备和存储介质
CN113254274A (zh) 消息处理方法、装置、存储介质以及服务器
CN109067864B (zh) 通知消息推送方法、装置及电子设备
CN115934378A (zh) 业务数据处理方法、装置、电子设备和存储介质
CN112379952B (zh) 一种跨进程回调的实现方法
CN114168607A (zh) 全局序列号生成方法、装置、设备、介质和产品
CN112333262A (zh) 数据更新提示方法、装置、计算机设备及可读存储介质
CN112597224A (zh) 数据导出方法、数据导出装置、电子设备及介质
CN112052101A (zh) 一种广播的处理方法、装置及计算机系统
CN111625524B (zh) 数据处理方法、装置、设备及存储介质
CN112312148B (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