System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 基于消息队列的任务调度方法及计算机可读存储介质技术_技高网

基于消息队列的任务调度方法及计算机可读存储介质技术

技术编号:41185097 阅读:3 留言:0更新日期:2024-05-07 22:17
本发明专利技术公开了一种基于消息队列的任务调度方法及计算机可读存储介质,方法包括:根据业务方发起的任务请求,构造预设格式的消息体并发送至消息队列,消息体包括任务索引、任务列表和任务执行模式,任务执行模式包括顺序执行、并行执行、回滚操作和重新执行;定期扫描消息队列,获取新入队的消息体,作为当前消息体;根据当前消息体中的任务索引、任务列表和任务执行模式,确定当前任务,并根据当前消息体中的任务执行模式,执行当前任务;根据当前任务的执行结果,对当前消息体中的任务索引和/或任务执行模式进行修改,得到新的消息体并发送至消息队列,或将当前消息体从消息队列中移除。本发明专利技术可提高消息处理的性能及任务调度的灵活性。

【技术实现步骤摘要】

本专利技术涉及任务调度,尤其涉及一种基于消息队列的任务调度方法及计算机可读存储介质


技术介绍

1、从以前的单体架构到现在的微服务架构,成百上千的服务之间相互调用和依赖。从互联网初期一个服务器上有100个在线用户已经很了不得,到现在坐拥10亿日活的微信。需要采取一方案来解耦服务之间的关系、控制资源合理合时地使用以及缓冲流量洪峰等等。为此引入消息队列,它常用来实现:异步处理、服务解耦、流量控制。消息队列主要是通过异步来进行来调度任务,从而实现异步处理,服务解耦,流量控制。

2、在实际的应用中,有时候要求某些任务是异步的,某一组任务又是同步的,这一组任务和另外一组任务又是异步的,这个时候就要实现消息队列的同步调度任务。现有的技术方案实现方式是设置消息队列中的优先级和依赖关系,来确保消息的顺序和处理,收到一个消息先要判断是否另外比较高优先级的消息存在,如果存在则不消费,这种方案存在的缺陷是会发生轮询等待,比如一组任务由10个子任务组成,那么需要使用10个消息,当其中一个最高优先级的消息在消费,其他9个消息会一直发给消费者,消费者判断又退回去,一直等到最高优先级的消息消费完,才会消费下一个消息,这种场景下消息数量多,最高优先级的消息在消费的时候,其他消息要一直轮询等待,而轮询等待会一直收发消息,影响消息队列的流量和吞吐量。

3、另外,针对同步任务调度需要做回滚操作。比如10步任务做到第5步失败的话,这个时候前面执行成功的4步要做回滚操作。现有的消息队列实现分布式事务只能是一组任务同时执行成功或者同时执行失败,无法按顺序执行成功和按顺序执行回滚,也无法重头执行整个任务组的所有任务。


技术实现思路

1、本专利技术所要解决的技术问题是:提供一种基于消息队列的任务调度方法及计算机可读存储介质,可提高消息处理的性能,且可提高任务调度的灵活性。

2、为了解决上述技术问题,本专利技术采用的技术方案为:一种基于消息队列的任务调度方法,包括:

3、根据业务方发起的任务请求,构造预设格式的消息体,并将所述消息体发送至消息队列,所述消息体包括任务索引、任务列表和任务执行模式,所述任务执行模式包括顺序执行、并行执行、回滚操作和重新执行;

4、定期扫描所述消息队列,获取新入队的消息体,作为当前消息体;

5、根据当前消息体中的任务索引、任务列表和任务执行模式,确定当前任务,并根据当前消息体中的任务执行模式,执行当前任务;

6、根据当前任务的执行结果,对当前消息体中的任务索引和/或任务执行模式进行修改,得到新的消息体,并将所述新的消息体发送至消息队列,或将当前消息体从所述消息队列中移除。

7、本专利技术还提出一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上所述的方法。

8、本专利技术的有益效果在于:通过根据业务需求封装消息体并发送到消息队列,并通过监听消息队列获取消息体并进行解析,根据任务索引和任务执行模式执行相应的任务,任务执行成功后修改任务索引重新投递到消息队列,从而继续执行下一任务,如此循环把任务执行完成,所有任务都执行完成后即可将消息体从消息队列中移除。本专利技术只需一个消息体即可包含多个任务,可大大减少消息数据量;并且通过修改消息体重新投递的方式,可以不需要轮询,从而可大大减少系统的流量和查询性能损耗,还可以提高使用灵活性;同时由于消息队列本身是异步执行的,即消息队列中的消息体是异步执行的,而同一消息体对应的任务可以同步执行,从而可以提高任务调度的灵活性。

本文档来自技高网...

【技术保护点】

1.一种基于消息队列的任务调度方法,其特征在于,包括:

2.根据权利要求1所述的基于消息队列的任务调度方法,其特征在于,所述任务执行模式包括顺序执行、并行执行、回滚操作和重新执行。

3.根据权利要求2所述的基于消息队列的任务调度方法,其特征在于,所述根据当前消息体中的任务索引、任务列表和任务执行模式,确定当前任务,并根据当前消息体中的任务执行模式,执行当前任务,具体为:

4.根据权利要求2所述的基于消息队列的任务调度方法,其特征在于,所述根据当前任务的执行结果,对当前消息体中的任务索引和/或任务执行模式进行修改,得到新的消息体,并将所述新的消息体发送至消息队列,或将当前消息体从所述消息队列中移除,具体为:

5.根据权利要求4所述的基于消息队列的任务调度方法,其特征在于,所述根据当前消息体中的任务执行模式,对当前消息体中的任务索引进行修改,具体为:

6.根据权利要求4所述的基于消息队列的任务调度方法,其特征在于,所述根据当前消息体中的任务执行模式,对当前消息体进行修改,得到新的消息体,并将所述新的消息体发送至消息队列,或将当前消息体从所述消息队列中移除,并进行异常记录,具体为:

7.根据权利要求4所述的基于消息队列的任务调度方法,其特征在于,所述记录异常信息之后,进一步包括:

8.根据权利要求4所述的基于消息队列的任务调度方法,其特征在于,还包括:

9.根据权利要求4所述的基于消息队列的任务调度方法,其特征在于,还包括:

10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-9任一项所述的方法。

...

【技术特征摘要】

1.一种基于消息队列的任务调度方法,其特征在于,包括:

2.根据权利要求1所述的基于消息队列的任务调度方法,其特征在于,所述任务执行模式包括顺序执行、并行执行、回滚操作和重新执行。

3.根据权利要求2所述的基于消息队列的任务调度方法,其特征在于,所述根据当前消息体中的任务索引、任务列表和任务执行模式,确定当前任务,并根据当前消息体中的任务执行模式,执行当前任务,具体为:

4.根据权利要求2所述的基于消息队列的任务调度方法,其特征在于,所述根据当前任务的执行结果,对当前消息体中的任务索引和/或任务执行模式进行修改,得到新的消息体,并将所述新的消息体发送至消息队列,或将当前消息体从所述消息队列中移除,具体为:

5.根据权利要求4所述的基于消息队列的任务调度方法,其特征在于,所述根据当...

【专利技术属性】
技术研发人员:张辉郑剑峰夏威
申请(专利权)人:福建升腾资讯有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1