【软通鲲鹏云最佳实践43】quartz-2.3.1 鲲鹏云服务器安装实践
一、 软件介绍
Quartz是一个开源的作业调度框架,它完全由Java写成,并设计用于J2SE和J2EE应用中。它提供了巨大的灵 活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。
二、 支持的操作系统
经过华为云严格实测,以下操作系统在鲲鹏生态中可以完整运行Varnish的全部功能:
CentOS7.6
三、 支持版本和获取方式
建议使用的版本:quartz-2.3.1
下载地址:
通过mvn获取:
<dependencies> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.1</version> </dependency> </dependencies>
四、 编译与测试环境
本文选用华为鲲鹏云服务器ECS KC1实例做测试,KC1实例的处理器为兼容ARMv8指令集的鲲鹏920。详细规格如下:
类别 | 子项 | 版本 |
云主机配置 | ECS实例类型 | kc1.2xlarge.4 |
ECS配置 | 8U32GB | |
EVS | 高IO(80GB) | |
云OS | Kernel | 4.18.0 |
五、 编译安装与测试
1 安装依赖
# yum -y install wget tree 卸载自带的jdk,安装jdk-1.8_151: # rpm -qa | grep jdk # rpm -e --nodeps java-1.8.0-openjdkxxxxxxx # rpm -e --nodeps java-1.8.0-openjdk-headlessxxxxxxxx # cd /opt/ && wget https://repo.huaweicloud.com/java/jdk/8u151-b12/jdk-8u151-linux-arm64-vfp-hflt.tar.gz # tar -zxvf jdk-8u151-linux-arm64-vfp-hflt.tar.gz # vim /etc/profile export JAVA_HOME=/opt/jdk1.8.0_151 export PATH=$PATH:$JAVA_HOME/bin # source /etc/profile
2 编译安装
下载maven,并安装:
# wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.tar.gz # tar -zxvf apache-maven-3.6.0-bin.tar.gz
配置环境变量:
# vim /etc/profile export MAVEN_HOME=/opt/apache-maven-3.6.0 export PATH=$PATH:$MAVEN_HOME/bin :wq保存.# mvn -version Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T02:41:47+08:00) Maven home: /opt/apache-maven-3.6.0 Java version: 1.8.0_212, vendor: Oracle Corporation, runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.aarch64/jre Default locale: zh_CN, platform encoding: UTF-8 OS name: "linux", version: "4.14.0-115.5.1.el7a.aarch64", arch: "aarch64", family: "unix"
创建spring java 项目:
# mvn archetype:generate -DgroupId=com.isstech -DartifactId=demo -DarchetypeArtifactId=maven-archetype-quickstart 提示: [INFO] ---------------------------------------------------------------------------- [INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-quickstart:1.0 [INFO] ---------------------------------------------------------------------------- [INFO] Parameter: basedir, Value: /opt [INFO] Parameter: package, Value: com.isstech [INFO] Parameter: groupId, Value: com.isstech [INFO] Parameter: artifactId, Value: demo [INFO] Parameter: packageName, Value: com.isstech [INFO] Parameter: version, Value: 1.0-SNAPSHOT [INFO] project created from Old (1.x) Archetype in dir: /opt/demo [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 06:07 min [INFO] Finished at: 2019-10-16T07:48:43+08:00 [INFO] ------------------------------------------------------------------------
项目创建成功,项目目录结构如下:
# tree demo demo ├── pom.xml └── src ├── main │ └── java │ └── com │ └── isstech │ └── App.java └── test └── java └── com └── isstech └── AppTest.java
修改demo/pom.xml,加载quartz:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.isstech</groupId> <artifactId>demo</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>demo</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.1</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass>com.isstech.HelloScheduler</mainClass> <layout>JAR</layout> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
# vim deom/pom.xml
我不使用junit组件来测试用例,所以删掉AppTest.java
# rm -rf src/test
创建demo/src/main/java/com/isstech/HelloJob.java文件
# vim demo/src/main/java/com/isstech/HelloJob.java
package com.isstech; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import java.text.SimpleDateFormat; import java.util.Date; public class HelloJob implements Job { public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { Date date = new Date(); SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println("Current Time is:"+ sf.format(date)); System.out.println("Hello Quartz"); } }
修改App.java为HelloScheduler.java,添加逻辑触发HelloJob;
# mv demo/src/main/java/com/isstech/App.java demo/src/main/java/com/isstech/HelloScheduler.java # vim demo/src/main/java/com/isstech/HelloScheduler.java
package com.isstech; import org.quartz.JobBuilder; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.SimpleScheduleBuilder; import org.quartz.SimpleTrigger; import org.quartz.TriggerBuilder; import org.quartz.impl.StdSchedulerFactory; public class HelloScheduler { public static void main(String[] args) throws SchedulerException { //创建一个jobDetail的实例,将该实例与HelloJob Class绑定 JobDetail jobDetail = JobBuilder.newJob(HelloJob.class).withIdentity("myJob").build(); //创建一个Trigger触发器的实例,定义该job立即执行,并且每2秒执行一次,一直执行 SimpleTrigger trigger = TriggerBuilder.newTrigger().withIdentity("myTrigger").startNow() .withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(2).repeatForever()).build(); //创建schedule实例 StdSchedulerFactory factory = new StdSchedulerFactory(); Scheduler scheduler = factory.getScheduler(); scheduler.start(); scheduler.scheduleJob(jobDetail,trigger); } }
3 验证测试
构建项目
# cd demo && mvn clean package
成功显示如下:
# java -jar /opt/demo/target/demo-1.0-SNAPSHOT.jar SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. Current Time is:2019-10-16 10:40:25 Hello Quartz Current Time is:2019-10-16 10:40:27 Hello Quartz Current Time is:2019-10-16 10:40:29 Hello Quartz Current Time is:2019-10-16 10:40:31 Hello Quartz Current Time is:2019-10-16 10:40:33 Hello Quartz Current Time is:2019-10-16 10:40:35 Hello Quartz
4 问题总结
无
六、 声明
本文档中的软件包均来自软件官网,安装文档部分参考官网的安装方法,本软件测试环境为华为鲲鹏云ARM服务器,具体配置信息参照《编译与测试环境》部分。
本文档中的软件安装测试基于华为鲲鹏云ARM服务器环境测试,如在使用本文档的安装方法进行安装过程中,可能由于系统版本、软件依赖或其他原因造成软件安装不成功,请自行解决或联系我们,请事先备份相关重要数据、资料。
使用文档风险由用户自行承担,在适用法律允许的最大范围内,对因使用或不能使用本文档所产生的损害及风险,包括但不限于直接或间接的个人损害、商业赢利的丧失、贸易中断、商业信息的丢失或任何其它经济损失,我司不承担任何责任。
我司不担保所提供的软件功能及服务一定能满足用户的要求,也不担保服务不会中断,对服务的及时性、安全性、真实性、准确性都不作担保。
- 点赞
- 收藏
- 关注作者
评论(0)