当前位置:网站首页 > Java教程 > 正文

JAVA典型任务教程



在系统开发不可以避免的要使用到定时任务,简单的任务可以使用spring的@Scheduled注解或者quartz来实现,但对于复杂的任务最好使用分布式的调度框架来处理,这样可以部署集群,保证系统的扩展性及高可用性。本文主要介绍XXL-JOB的基本使用,详细说明请参考官方文档:https://www.xuxueli.com/xxl-job;文中使用到的软件及版本:XXL-JOB 2.2.0、SpringBoot 2.2.5.RELEASE、Java 1.8.0_191、MySQL 5.7。

Spring的@Scheduled对于单机的简单任务使用起来很方便,但只能单节点运行,不利于横向扩展。

Quartz作为开源作业调度中的佼佼者,是作业调度的首选。但是集群环境中Quartz存在以下问题:
问题一:调用API的的方式操作任务,不人性化;
问题二:需要持久化业务QuartzJobBean到底层数据表中,系统侵入性相当严重;
问题三:调度逻辑和QuartzJobBean耦合在同一个项目中,这将导致一个问题,在调度任务数量逐渐增多,同时调度任务逻辑逐渐加重的情况下,此时调度系统的性能将大大受限于业务;
问题四:quartz底层以“抢占式”获取DB锁并由抢占成功节点负责运行任务,会导致节点负载悬殊非常大;

下载地址:https://github.com/xuxueli/xxl-job,下载后用idea打开:

SQL脚本位置为:

2.3.1、配置修改

配置文件路径为:

修改配置文件中的数据库的相关信息,其他参数根据需要修改:

2.3.2、部署调度中心

调度中心是一个SpringBoot的工程,在本地可以直接运行,或打成jar包到服务器上运行。

2.3.3、调度中心集群部署

调度中心支持集群部署,提升调度系统容灾和可用性。
调度中心集群部署时,几点要求和建议:
  DB配置保持一致;
  集群机器时钟保持一致(单机集群忽视);
  建议:推荐通过nginx为调度中心集群做负载均衡,分配域名。调度中心访问、执行器回调配置、调用API服务等操作均通过该域名进行。

2.4.1、引入依赖

2.4.2、执行器配置文件修改

拷贝/xxl-job/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/resources/application.properties中的配置信息到自己SpringBoot工程中的配置文件中,并根据需要修改对应的配置信息。

2.4.3、执行器配置

可以直接拷贝/xxl-job/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/java/com/xxl/job/executor/core/config/XxlJobConfig.java到自己的工程中。

2.4.4、部署执行器

执行器是一个SpringBoot的工程,在本地可以直接运行,或打成jar包到服务器上运行。

2.4.5、执行器集群部署(可选)

执行器支持集群部署,提升调度系统可用性,同时提升任务处理能力。
执行器集群部署时,几点要求和建议:
  执行器回调地址(xxl.job.admin.addresses)需要保持一致;执行器根据该配置进行执行器自动注册等操作。
  同一个执行器集群内AppName(xxl.job.executor.appname)需要保持一致;调度中心根据该配置动态发现不同集群的在线执行器列表。

2.5.1、

2.5.1.1、开发JobHandler

在执行器的项目中新建类,方法上增加@XxlJob注解即表示一个JobHandler。

2.5.1.2、前台配置任务

JobHandler填的值对应上一步@XxlJob中的值。

2.5.2、

保存后在“操作”中点击GLUE IDE:

版权声明


相关文章:

  • java数字在线教程2024-12-11 22:50:00
  • java 14使用教程2024-12-11 22:50:00
  • java教程好学吗2024-12-11 22:50:00
  • java设计视频教程2024-12-11 22:50:00
  • java自学教程图解2024-12-11 22:50:00
  • java语言设计教程2024-12-11 22:50:00
  • java类 教程2024-12-11 22:50:00
  • 疯狂java教程222024-12-11 22:50:00
  • java网络 菜鸟教程2024-12-11 22:50:00
  • java教程腾讯视频2024-12-11 22:50:00