CN112099935A - 一种任务处理方法及装置 - Google Patents
一种任务处理方法及装置 Download PDFInfo
- Publication number
- CN112099935A CN112099935A CN202011024978.3A CN202011024978A CN112099935A CN 112099935 A CN112099935 A CN 112099935A CN 202011024978 A CN202011024978 A CN 202011024978A CN 112099935 A CN112099935 A CN 112099935A
- Authority
- CN
- China
- Prior art keywords
- rmq
- queue
- target
- retry
- execution
- 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.)
- Granted
Links
Images
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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3017—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is implementing multitasking
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/484—Precedence
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Retry When Errors Occur (AREA)
Abstract
本申请涉及一种任务处理方法及装置,方法包括:接收任务处理请求,任务处理请求为同步操作请求;将任务处理请求中的待处理任务分解为多个子任务;将多个子任务分别发送至对应的RMQ队列,其中每个RMQ队列对应一个子任务;通过各个RMQ队列分别执行对应的子任务,并监听每个RMQ队列的执行结果,执行结果包括成功或者失败;当监听到RMQ队列中的目标RMQ队列的执行结果为失败时,通过重试机制对目标RMQ队列中的子任务执行重试操作,直到所有RMQ队列中分别对应的子任务的执行结果均为成功为止。本申请根据执行结果确定执行重试操作的RMQ队列,实现仅对未执行成功的处理对象进行重试,保证了任务最终能够成功执行的同时,不会造成资源浪费。
Description
技术领域
本申请涉及数据处理领域,尤其涉及一种任务处理方法及装置。
背景技术
随着互联网的发展,很多业务都可以在网上进行,比如电子金融业务、电商业务等。一般地,可以由流程引擎将业务所涉及的一个或多个执行步骤进行编排,构成相应的业务流程,再按照业务流程顺序执行业务活动,从而实现业务目标。
对于一些业务场景,需要多个执行步骤同步完成,当每个步骤执行完成后,整个业务才算成功,如果某一个执行步骤失败,则所有执行步骤重新执行,例如:有同步进行的10个执行步骤,9个执行步骤都成功了,1个执行步骤不成功,这时候需要先回滚到初始状态,9个成功的步骤都需要重新再执行一次。这样既造成了资源的浪费,也降低了处理效率。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本申请提供了一种任务处理方法、装置、电子设备及存储介质。
根据本申请实施例的一个方面,提供了一种任务处理方法,包括:
接收任务处理请求,所述任务处理请求为同步操作请求;
将所述任务处理请求中的待处理任务分解为多个子任务;
将所述多个子任务分别发送至对应的RMQ队列,其中每个RMQ队列对应一个子任务;
通过各个所述RMQ队列分别执行对应的子任务,并监听每个RMQ队列的执行结果,所述执行结果包括成功或者失败;
当监听到所述RMQ队列中的目标RMQ队列的执行结果为失败时,通过重试机制对所述目标RMQ队列中的子任务执行重试操作,直到所有RMQ队列中分别对应的子任务的执行结果均为成功为止。
进一步的,所述通过各个所述RMQ队列分别执行对应的子任务,并监听每个RMQ队列的执行结果,包括:
通过所述RMQ队列将所述子任务发送至对应的处理对象,其中每个RMQ队列对应一个处理对象;
基于所述RMQ队列监听所述处理对象执行所述子任务反馈的执行结果,所述执行结果包括成功或者失败。
进一步的,所述当监测到所述RMQ队列中的目标RMQ队列的执行结果为失败时,通过重试机制对所述目标RMQ队列中的子任务进行重新执行,直到所有RMQ队列中分别对应的子任务的执行结果均为成功为止,包括:
将监听到所述执行结果为失败的RMQ队列作为目标RMQ队列;
确定所述目标RMQ队列对应的目标处理对象的当前状态;
根据所述当前状态确定所述目标RMQ队列的优先级;
根据所述优先级对所述目标RMQ队列中的子任务执行重试操作,直到所有RMQ队列中分别对应的子任务的执行结果均为成功为止。
进一步的,所述方法还包括:
确定所述目标RMQ队列执行重试操作的执行次数;
获取预设重试时间设置规则;
根据所述执行次数以及所述预设重试时间设置规则,确定下一次执行重试操作与本次执行重试操作之间的时间间隔。
进一步的,所述方法还包括:
当所述执行次数等于预设阈值时,更新所述同步操作请求对应项目的处理状态;
将所述处理状态发送至终端设备;
接收所述终端设备根据所述处理状态反馈的指示信息;
根据所述指示信息对所述项目执行相应的处理操作。
根据本申请实施例的另一个方面,还提供了一种任务处理装置,包括:
获取模块,用于接收任务处理请求,所述任务处理请求为同步操作请求;
分解模块,用于将所述任务处理请求中的待处理任务分解为多个子任务;
分发模块,用于将所述多个子任务分别发送至对应的RMQ队列,其中每个RMQ队列对应一个子任务;
监听模块,用于通过各个所述RMQ队列分别执行对应的子任务,并监听每个RMQ队列的执行结果,所述执行结果包括成功或者失败;
重试模块,用于当监听到所述RMQ队列中的目标RMQ队列的执行结果为失败时,通过重试机制对所述目标RMQ队列中的子任务执行重试操作,直到所有RMQ队列中分别对应的子任务的执行结果均为成功为止。
进一步的,所述监听模块,具体用于通过所述RMQ队列将所述子任务发送至对应的处理对象,其中每个RMQ队列对应一个处理对象;基于所述RMQ队列监听所述处理对象执行所述子任务反馈的执行结果,所述执行结果包括成功或者失败。
进一步的,重试模块,用于将监听到所述执行结果为失败的RMQ队列作为目标RMQ队列;确定所述目标RMQ队列对应的目标处理对象的当前状态;根据所述当前状态确定所述目标RMQ队列的优先级;根据所述优先级对所述目标RMQ队列中的子任务执行重试操作,直到所有RMQ队列中分别对应的子任务的执行结果均为成功为止。
进一步的,所述装置还包括:
确定模块,用于确定对所述目标RMQ队列执行重试操作的执行次数;
查询模块,用于获取预设重试时间设置规则;
处理模块,用于根据所述执行次数以及所述预设重试时间设置规则,确定下一次执行重试操作与本次执行重试操作之间的时间间隔。
进一步的,所述装置还包括:
更新模块,用于当所述执行次数等于预设阈值时,更新所述同步操作请求对应项目的处理状态;
发送模块,用于将所述处理状态发送至终端设备;
接收模块,用于接收所述终端设备根据所述处理状态反馈的指示信息;
执行模块,用于根据所述指示信息对所述待处理任务执行相应的处理操作。
根据本申请实施例的另一个方面,还提供了一种电子设备,包括:处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行计算机程序时,实现上述方法步骤。
根据本申请实施例的另一个方面,还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法步骤。
本申请实施例提供的上述技术方案与现有技术相比具有如下优点:本申请公开的技术方案通过对同步操作请求进行分解得到的操作指令分别发送到相应的处理对象,通过监听处理对象反馈的执行结果,根据执行结果确定执行重试操作的处理对象,以此能够实现仅对未执行成功的处理对象进行重试,保证了服务最终能够成功执行的同时,不会造成资源浪费。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种任务处理系统的框图;
图2为本申请实施例提供的一种任务处理方法的流程图;
图3为本申请实施例提供的一种任务处理装置的框图;
图4为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供了一种任务处理方法、装置、电子设备及存储介质。本发明实施例所提供的方法可以应用于任意需要的电子设备,例如,可以为服务器、终端等电子设备,在此不做具体限定,为描述方便,后续简称为电子设备。
图1为本申请实施例提供的一种任务处理系统的框图,如图1所示,本申请实施例提供了一种任务处理系统,包括:交换机100,RMQ队列200以及处理器300;
交换机100接收任务处理请求,任务处理请求为同步操作请求;将待处理任务请求中的待处理任务分解为多个子任务;将多个子任务分别发送至对应的RMQ队列200,其中每个RMQ队列200对应一个子任务;RMQ队列200将子任务分发至对应的处理器300,每个RMQ队列对应一个处理器,处理器300根据子任务执行相应的处理操作,并将执行结果反馈至RMQ队列200。执行结果包括成功或者失败;
在本申请实施例中,交换机100对各个RMQ队列中的执行结果进行监听,并将执行结果为失败的RMQ队列作为目标RMQ队列,通过重试机制对目标RMQ队列中的子任务执行重试操作,直到所有RMQ队列中分别对应的子任务的执行结果均为成功为止。
本实施例中的RMQ(Rabbit MQ)是实现了高级消息队列协议(AMQP)的开源消息代理软件。Rabbit MQ服务器是用Erlang语言编写的,而群集和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。
需要说明的是,当交换机100接收到任务处理请求时,根据待处理任务确定待处理任务,并对待处理任务进行分解得到至少两个子任务,此时待处理任的状态为执行中。然后将子任务分发RMQ队列的队列中,由RMQ队列将子任务发放至相应的处理器,由处理器根据子任务执行相应的操作。
例如:根据待处理任务分解得到的三个子任务包括Z1、Z2、Z3,交换机100将Z1、Z2、Z3相应的发放至RMQ队列200中的队列R1、R2、R3中,通过队列R1、R2、R3将子任务相应的发放至处理器A1、A2、A3中。
在本申请实施例中,当交换机100对待重试处理对象执行重试操作的执行次数等于预设阈值时,更新待处理任务对应的处理状态,并将处理状态发送至请求方。
下面对本发明实施例所提供的一种任务处理方法进行介绍。
图2为本申请实施例提供的一种任务处理方法的流程图。如图2所示,该方法包括以下步骤:
步骤S11,接收任务处理请求,任务处理请求为同步操作请求;
在本申请实施例中,任务处理请求可以由请求方向服务方发送,可以理解的,请求方为任务处理请求发起方,其可以发送一些业务、待处理任务的任务处理请求,因此可以通过任务处理请求确定待处理任务。
步骤S12,将任务处理请求中的待处理任务分解为多个子任务;
在本申请实施例中,待处理任务中携带有多个同步执行的步骤。因此,需要对待处理业务中同步执行的步骤进行分解得到多个子任务,一个步骤对应一个子任务。
可选的,分解过程包括:每一次调用执行步骤对应的函数时,都会创建一个方法对象,之后会将此方法对象加入到活动列表(activation queue),活动对象(ACE_Task)的服务函数中从活动列表中取出方法对象,并执行函数异步调用。
#ifndef__LOGGER_H__
#define__LOGGER_H__
#include"ace/Task.h"
#include"ace/Future.h"
#include"ace/Activation_Queue.h"
*将函数的同步调用转换为异步调用,实现的原理主要有以下三点
*1.通过创建方法对象
*2.将其压入到活动列表activation_queue
*3.出列,并执行方法异步调用
...
#endif
作为一个示例,当待处理任务为账号充值任务时,根据充值请求确定的多个同步执行的步骤可以包括:C1、确定充值账号的状态信息,C2、确定充值账号是否存在违规行为,以及C3、确定充值账号是否满足充值条件。然后对将上述三个同步执行的步骤从待处理任务中分解出来,得到三个子任务。
步骤S13,将多个子任务分别发送至对应的RMQ队列,其中每个RMQ队列对应一个子任务。
在本申请实施例中,首先将子任务发送至RMQ队列,每个子任务对应一个RMQ队列,通过RMQ队列将多个子任务分发至执行该子任务的处理对象,可以理解的,处理对象可以是执行操作指令的处理器、服务器或者应用程序。
以上述示例进行说明,首先将C1发送至RMQ队列中的R1,C2发送至RMQ队列中的R2,以及C3发送至RMQ队列中的R3,然后由R1、R2和R3再将C1、C2和C3分别发放到相应的处理对象。
需要说明的是,在本步骤中,通过设置RMQ队列转发操作指令,能实现对处理对象同步发送子任务,并且也可以对处理对象反馈的结果进行统一管理,实现了整体系统的扩展性。
步骤S14,通过各个RMQ队列分别执行对应的子任务,并监听每个RMQ队列的执行结果,执行结果包括成功或者失败。
在本步骤中,可以从RMQ队列中获取处理对象执行子任务反馈的执行结果。执行结果包括:执行状态和执行时间,其中执行状态包括:第一状态,第二状态以及第三状态,可以理解的,第一状态可以是失败/异常,第二状态可以是执行中,第三状态可以是成功。
步骤S15,当监听到RMQ队列中的目标RMQ队列的执行结果为失败时,通过重试机制对目标RMQ队列中的子任务执行重试操作,直到所有RMQ队列中分别对应的子任务的执行结果均为成功为止。
在本申请实施例中,将执行结果满足预设条件的RMQ队列作为目标RMQ队列,执行结果满足预设条件包括以下至少一项:执行结果为失败/异常;执行结果为执行中,且所述执行时间大于预设执行时长。可以理解的,当处理器出现故障或者维护时,容易导致执行时间大于预设执行时长。
在本申请实施例中,通过重试机制对目标RMQ队列中的子任务执行重试操作,包括;确定目标RMQ队列对应的目标处理对象的当前状态;根据当前状态确定目标RMQ队列的优先级;根据优先级对所述目标RMQ队列中的子任务执行重试操作,直到所有RMQ队列中分别对应的子任务的执行结果均为成功为止。
可以理解的,目标处理对象的当前状态可以是空闲状态和工作状态,例如:可以确定处理对象是否正在执行由其他的同步操作请求分解得到的子任务,如果正在执行由其他的同步操作请求分解得到的子任务则确定当前状态为工作状态,再获取执行进度,根据执行进度确定目标RMQ队列执行重试操作的优先级,执行进度越高的优先级越高。如果当前状态为空闲状态,目标RMQ队列执行重试操作的优先级最高。
作为一个示例,5个目标RMQ队列分别为目标RMQ队列1、目标RMQ队列2、目标RMQ队列3、目标RMQ队列4和目标RMQ队列5,其中目标RMQ队列1、目标RMQ队列3和目标RMQ队列5分别对应目标处理对象的当前状态均为空闲状态,目标RMQ队列2和目标RMQ队列4分别对应目标处理对象的当前状态均为工作状态,则确定目标RMQ队列2对应目标处理对象的执行进度为60%目标RMQ队列4对应目标处理对象的执行进度为80%,最终目标RMQ队列1、目标RMQ队列3、目标RMQ队列5为第一优先级,同步进行重试操作,目标RMQ队列4为第二优先级,目标RMQ队列2为第三优先级,依次执行重试操作。
本实施例中,本申请公开的技术方案通过对多个同步进行的操作指令分别发送到相应的处理对象,通过监听处理对象反馈的执行结果,确定未执行成功的处理对象,并对其进行重试操作,以此实现了对未执行成功的处理对象进行重试,保证了业务最终能够成功执行的同时,不会造成资源浪费。
另外,本申请实施例提供方法还包括:确定对目标RMQ队列执行重试操作的执行次数,根据执行次数以及预设规则确定下一次执行重试操作与本次执行重试操作之间的时间间隔。
具体的确定所述重试间隔时长的方法可以有多种,如下列举几种确定重试时间间隔的例子,包括但不限于:
例如,可以根据执行次数以及预定的重试时间设置规则确定重试间隔时长,该重试时间设置规则可以是一种公式。比如,该公式可以用于表示重试次数与重试间隔时长之间的函数关系,示例性的,下一次任务处理与本次业务执行之间的重试间隔时长是“当前的重试间隔时长”+n秒,其中,n是执行次数。
上述预定的重试时间设置方式可以是设置执行次数与重试间隔时长之间的一种对应关系,但是该对应关系不依赖于执行次数。比如,可以记录下每次重试时的当前重试间隔时长,并将下一次任务处理的重试间隔时长在当前的重试间隔时长的基础上翻倍。比如,第一次任务处理时的重试间隔时长(即距离首次执行失败的时间间隔)是1天,可以记录下“1”,并且确定“1*2=2秒”作为第二次任务处理时的重试间隔时长(即距离第一次任务处理的时间间隔)。其中,重试间隔时长的具体数值的确定依据的是上一次的重试间隔时长,而没有像“当前的重试间隔时长”+n秒”那样包括任务处理次数。不过,任务处理次数与重试间隔时长建立了对应关系。
如,“第一次执行重试的重试间隔为1秒”、“第二次执行重试的重试间隔为2秒”、“第三次执行重试的重试间隔为4秒”。
或者,也可以是下一次的重试间隔时长都要比相邻的上次的重试间隔时长多2秒等,比如,第一次执行重试的重试间隔—3秒”、“第二次执行重试的重试间隔—5秒”、“第三次执行重试的重试间隔—7秒”。
为了实施简单,这种随着执行重试操作的执行次数增加而重试间隔时长增大的重试机制,可以应用于所有业务,即不区分业务是否具有该特点“在执行多次的重试时,重试次数越多,成功率越低”。一方面,对于不具有该特点的业务,通常会在前几次的任务处理就能够执行成功,并不会对这部分业务的执行效率造成太大的影响;另一方面,对于具有该特点的业务,也恰好可以通过这种逐渐稀疏重试的机制,减少对资源的消耗。当然,也可以只对部分业务的重试采用该方法,也是可以的,例如,该部分业务可以进行指定选择。
每次重试的重试间隔时长的确定时机,可以是首次执行失败时,一次性计算得到预定次数的任务处理对应的重试间隔时长。例如,可以计算得到“在1秒以后执行第一次重试,接着再间隔2秒进行第二次重试,接着再间隔4秒进行第三次重试”,等执行第三次重试的时候,再接着计算出下一批预定次数的任务处理对应的重试间隔时长,例如,“在间隔7秒后进行第四次重试,接着再间隔11天进行第五次任务处理”,等。又例如,还可以是每执行一次任务处理时,计算下一次任务处理与本次业务执行之间的重试间隔时长。
本申请实施通过在目标RMQ队列中子任务的重试次数逐渐增加时,设置下一次重试与本次任务执行之间的重试间隔时长也逐渐增大,使得重试间隔在逐渐稀疏化,继而可以降低对资源的消耗。再者,对于每一个执行失败的子任务来说,可以分散不同子任务的重试时间,尽量避免在同一时间捞取海量的子任务进行重试,也能降低对系统资源的消耗。
可选的,本实施例提供的方法还包括:当执行次数等于预设阈值时,更新待处理任务对应的处理状态,将处理状态发送至终端设备,接收所述终端设备根据所述处理状态反馈的指示信息;根据所述指示信息对所述待处理任务执行相应的处理操作。
图3为本申请实施例提供的一种任务处理装置的框图,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。如图3所示,该装置包括:
获取模块31,用于接收待处理任务请求,待处理任务请求为同步操作请求;
分解模块32,用于将待处理任务请求中的待处理任务分解为多个子任务;
分发模块33,用于将多个子任务分别发送至对应的RMQ队列,其中每个RMQ队列对应一个子任务;
监听模块34,用于通过各个RMQ队列分别执行对应的子任务,并监听每个RMQ队列的执行结果,执行结果包括成功或者失败;
重试模块35,用于当监听到RMQ队列中的目标RMQ队列的执行结果为失败时,通过重试机制对目标RMQ队列中的子任务执行重试操作,直到所有RMQ队列中分别对应的子任务的执行结果均为成功为止。
进一步的,监听模块,具体用于通过RMQ队列将子任务发送至对应的处理对象,其中每个RMQ队列对应一个处理对象;基于RMQ队列监听处理对象执行子任务反馈的执行结果,执行结果包括成功或者失败。
进一步的,重试模块,用于将监听到执行结果为失败的RMQ队列作为目标RMQ队列;确定目标RMQ队列对应的目标处理对象的当前状态;根据当前状态确定目标RMQ队列的优先级;根据优先级对目标RMQ队列中的子任务执行重试操作,直到所有RMQ队列中分别对应的子任务的执行结果均为成功为止。
进一步的,装置还包括:
确定模块,用于确定对目标RMQ队列执行重试操作的执行次数;
查询模块,用于获取预设重试时间设置规则;
处理模块,用于根据执行次数以及预设重试时间设置规则,确定下一次执行重试操作与本次执行重试操作之间的时间间隔。
进一步的,装置还包括:
更新模块,用于当执行次数等于预设阈值时,更新同步操作请求对应待处理任务的处理状态;
发送模块,用于将处理状态发送至终端设备;
接收模块,用于接收终端设备根据处理状态反馈的指示信息;
执行模块,用于根据指示信息对待处理任务执行相应的处理操作。
本申请实施例还提供一种电子设备,如图4所示,电子设备可以包括:处理器1501、通信接口1502、存储器1503和通信总线1504,其中,处理器1501,通信接口1502,存储器1503通过通信总线1504完成相互间的通信。
存储器1503,用于存放计算机程序;
处理器1501,用于执行存储器1503上所存放的计算机程序时,实现上述实施例步骤。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,P C I)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(DigitalSignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例的步骤。
计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令进行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于进行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上进行、部分地在用户设备上进行、作为一个独立的软件包进行、部分在用户计算设备上部分在远程计算设备上进行、或者完全在远程计算设备或服务器上进行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令进行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
需要说明的是,对于上述装置、电子设备及计算机可读存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
进一步需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种任务处理方法,其特征在于,包括:
接收任务处理请求,所述任务处理请求为同步操作请求;
将所述任务处理请求中的待处理任务分解为多个子任务;
将所述多个子任务分别发送至对应的RMQ队列,其中每个RMQ队列对应一个子任务;
通过各个所述RMQ队列分别执行对应的子任务,并监听每个RMQ队列的执行结果,所述执行结果包括成功或者失败;
当监听到所述RMQ队列中的目标RMQ队列的执行结果为失败时,通过重试机制对所述目标RMQ队列中的子任务执行重试操作,直到所有RMQ队列中分别对应的子任务的执行结果均为成功为止。
2.根据权利要求1所述的方法,其特征在于,所述通过各个所述RMQ队列分别执行对应的子任务,并监听每个RMQ队列的执行结果,包括:
通过所述RMQ队列将所述子任务发送至对应的处理对象,其中每个RMQ队列对应一个处理对象;
基于所述RMQ队列获取所述处理对象执行所述子任务反馈的执行结果,所述执行结果包括成功或者失败。
3.根据权利要求2所述的方法,其特征在于,所述当监听到所述RMQ队列中的目标RMQ队列的执行结果为失败时,通过重试机制对所述目标RMQ队列中的子任务进行重新执行,直到所有RMQ队列中分别对应的子任务的执行结果均为成功为止,包括:
将监听到所述执行结果为失败的RMQ队列作为目标RMQ队列;
确定所述目标RMQ队列对应的目标处理对象的当前状态;
根据所述当前状态确定所述目标RMQ队列的优先级;
根据所述优先级对所述目标RMQ队列中的子任务执行重试操作,直到所有RMQ队列中分别对应的子任务的执行结果均为成功为止。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定所述目标RMQ队列执行重试操作的执行次数;
获取预设重试时间设置规则;
根据所述执行次数以及所述预设重试时间设置规则,确定下一次执行重试操作与本次执行重试操作之间的时间间隔。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
当所述执行次数等于预设阈值时,更新所述待处理任务的处理状态;
将所述处理状态发送至终端设备;
接收所述终端设备根据所述处理状态反馈的指示信息;
根据所述指示信息对所述待处理任务执行相应的处理操作。
6.一种任务处理装置,其特征在于,包括:
获取模块,用于接收任务处理请求,所述任务处理请求为同步操作请求;
分解模块,用于将所述任务处理请求中的待处理任务分解为多个子任务;
分发模块,用于将所述多个子任务分别发送至对应的RMQ队列,其中每个RMQ队列对应一个子任务;
监听模块,用于通过各个所述RMQ队列分别执行对应的子任务,并监听每个RMQ队列的执行结果,所述执行结果包括成功或者失败;
重试模块,用于当监听到所述RMQ队列中的目标RMQ队列的执行结果为失败时,通过重试机制对所述目标RMQ队列中的子任务执行重试操作,直到所有RMQ队列中分别对应的子任务的执行结果均为成功为止。
7.根据权利要求6所述的装置,其特征在于,所述监听模块,用于通过所述RMQ队列将所述子任务发送至对应的处理对象,其中每个RMQ队列对应一个处理对象,基于所述RMQ队列获取所述处理对象执行所述子任务反馈的执行结果,所述执行结果包括成功或者失败。
8.根据权利要求7所述的装置,其特征在于,重试模块,用于将监听到所述执行结果为失败的RMQ队列作为目标RMQ队列;确定所述目标RMQ队列对应的目标处理对象的当前状态;根据所述当前状态确定所述目标RMQ队列的优先级;根据所述优先级对所述目标RMQ队列中的子任务执行重试操作,直到所有RMQ队列中分别对应的子任务的执行结果均为成功为止。
9.根据权利要求6所述的装置,其特征在于,所述装置还包括:
确定模块,用于确定所述目标RMQ队列执行重试操作的执行次数;
查询模块,用于获取预设重试时间设置规则;
处理模块,用于根据所述执行次数以及所述预设重试时间设置规则,确定下一次执行重试操作与本次执行重试操作之间的时间间隔。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:
更新模块,用于当所述执行次数等于预设阈值时,更新所述待处理任务的处理状态;
发送模块,用于将所述处理状态发送至终端设备;
接收模块,用于接收所述终端设备根据所述处理状态反馈的指示信息;
执行模块,用于根据所述指示信息对所述待处理任务执行相应的处理操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011024978.3A CN112099935B (zh) | 2020-09-25 | 2020-09-25 | 一种任务处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011024978.3A CN112099935B (zh) | 2020-09-25 | 2020-09-25 | 一种任务处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112099935A true CN112099935A (zh) | 2020-12-18 |
CN112099935B CN112099935B (zh) | 2023-09-01 |
Family
ID=73755514
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011024978.3A Active CN112099935B (zh) | 2020-09-25 | 2020-09-25 | 一种任务处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112099935B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113176967A (zh) * | 2021-04-29 | 2021-07-27 | 北京奇艺世纪科技有限公司 | 数据的处理方法及装置、电子设备和计算机可读存储介质 |
CN113392119A (zh) * | 2021-06-30 | 2021-09-14 | 上海万物新生环保科技集团有限公司 | 一种数据一致性处理方法及设备 |
CN113849334A (zh) * | 2021-09-28 | 2021-12-28 | 咪咕文化科技有限公司 | 任务执行方法及装置 |
CN114493373A (zh) * | 2022-03-31 | 2022-05-13 | 中国科学院空天信息创新研究院 | 一种遥感卫星处理系统中应急任务处理方法及装置 |
JP7442110B1 (ja) | 2023-06-28 | 2024-03-04 | 17Live株式会社 | 端末、方法及びコンピュータプログラム |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050198638A1 (en) * | 2004-03-05 | 2005-09-08 | International Business Machines Corporation | Method of maintaining task sequence within a task domain across error recovery |
CN107179896A (zh) * | 2016-03-09 | 2017-09-19 | 阿里巴巴集团控股有限公司 | 任务处理方法和装置 |
CN107315629A (zh) * | 2017-06-14 | 2017-11-03 | 北京小米移动软件有限公司 | 任务处理方法、装置及存储介质 |
JP2018106387A (ja) * | 2016-12-26 | 2018-07-05 | キヤノンマーケティングジャパン株式会社 | 情報処理システム、その制御方法及びプログラム |
US20180375783A1 (en) * | 2017-06-27 | 2018-12-27 | Atlassian Pty Ltd | Retry handling in messaging queues |
CN109308214A (zh) * | 2017-07-27 | 2019-02-05 | 北京京东尚科信息技术有限公司 | 数据任务处理方法和系统 |
US10248487B1 (en) * | 2015-01-27 | 2019-04-02 | Violin Systems Llc | Error recovery for multi-stage simultaneously running tasks |
CN110659123A (zh) * | 2019-11-29 | 2020-01-07 | 中国人民解放军国防科技大学 | 一种基于消息的分布式任务分发调度方法及装置 |
-
2020
- 2020-09-25 CN CN202011024978.3A patent/CN112099935B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050198638A1 (en) * | 2004-03-05 | 2005-09-08 | International Business Machines Corporation | Method of maintaining task sequence within a task domain across error recovery |
US10248487B1 (en) * | 2015-01-27 | 2019-04-02 | Violin Systems Llc | Error recovery for multi-stage simultaneously running tasks |
CN107179896A (zh) * | 2016-03-09 | 2017-09-19 | 阿里巴巴集团控股有限公司 | 任务处理方法和装置 |
JP2018106387A (ja) * | 2016-12-26 | 2018-07-05 | キヤノンマーケティングジャパン株式会社 | 情報処理システム、その制御方法及びプログラム |
CN107315629A (zh) * | 2017-06-14 | 2017-11-03 | 北京小米移动软件有限公司 | 任务处理方法、装置及存储介质 |
US20180375783A1 (en) * | 2017-06-27 | 2018-12-27 | Atlassian Pty Ltd | Retry handling in messaging queues |
CN109308214A (zh) * | 2017-07-27 | 2019-02-05 | 北京京东尚科信息技术有限公司 | 数据任务处理方法和系统 |
CN110659123A (zh) * | 2019-11-29 | 2020-01-07 | 中国人民解放军国防科技大学 | 一种基于消息的分布式任务分发调度方法及装置 |
Non-Patent Citations (1)
Title |
---|
余志坚;姜春志;: "采用Scheduled Thread Pool Executor执行定时重试任务时内存溢出的分析及解决", 科技资讯, no. 07 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113176967A (zh) * | 2021-04-29 | 2021-07-27 | 北京奇艺世纪科技有限公司 | 数据的处理方法及装置、电子设备和计算机可读存储介质 |
CN113176967B (zh) * | 2021-04-29 | 2023-08-15 | 北京奇艺世纪科技有限公司 | 数据的处理方法及装置、电子设备和计算机可读存储介质 |
CN113392119A (zh) * | 2021-06-30 | 2021-09-14 | 上海万物新生环保科技集团有限公司 | 一种数据一致性处理方法及设备 |
CN113849334A (zh) * | 2021-09-28 | 2021-12-28 | 咪咕文化科技有限公司 | 任务执行方法及装置 |
CN114493373A (zh) * | 2022-03-31 | 2022-05-13 | 中国科学院空天信息创新研究院 | 一种遥感卫星处理系统中应急任务处理方法及装置 |
JP7442110B1 (ja) | 2023-06-28 | 2024-03-04 | 17Live株式会社 | 端末、方法及びコンピュータプログラム |
Also Published As
Publication number | Publication date |
---|---|
CN112099935B (zh) | 2023-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112099935B (zh) | 一种任务处理方法及装置 | |
CN108536532B (zh) | 一种批量任务处理方法及系统 | |
US6584491B1 (en) | Arrangement for monitoring a progress of a message flowing through a distributed multiprocess system | |
CN109656782A (zh) | 可视化调度监控方法、装置及服务器 | |
CN110221927B (zh) | 异步消息处理方法和装置 | |
US11818152B2 (en) | Modeling topic-based message-oriented middleware within a security system | |
JP2012521607A (ja) | 分散アプリケーションの監視 | |
CN110413384B (zh) | 延时任务处理方法及装置、存储介质、电子设备 | |
CN110659142A (zh) | 消息队列处理方法及装置、电子设备、存储介质 | |
CN111090532B (zh) | 应用服务的调用方法、其装置、电子设备及计算机存储介质 | |
CN112787999B (zh) | 跨链调用方法、装置、系统与计算机可读存储介质 | |
CN111796946A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN112667382A (zh) | 任务调度方法、装置、设备及存储介质 | |
CN110941622A (zh) | 一种数据处理方法及装置 | |
CN112231073A (zh) | 一种分布式任务调度方法及其装置 | |
CN114024999A (zh) | 一种任务补偿方法、系统、装置、电子设备、存储介质 | |
CN117762652A (zh) | 基于消息中间件的分布式事务的处理方法及装置 | |
CN111488373B (zh) | 用于处理请求的方法和系统 | |
CN112600842A (zh) | 集群shell方法、装置、电子设备及计算机可读存储介质 | |
CN111857995A (zh) | 进程调度方法和装置、存储介质及电子装置 | |
CN111274047A (zh) | 信息处理方法、终端、系统、计算机设备和存储介质 | |
US20150378809A1 (en) | Methods for implementing error detection and recovery and devices thereof | |
CN112825525A (zh) | 用于处理事务的方法和装置 | |
CN112596761B (zh) | 服务的更新发布方法、装置及相关设备 | |
CN113656239A (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 |