【软通鲲鹏云最佳实践43】quartz-2.3.1 鲲鹏云服务器安装实践

举报
软通智慧 发表于 2019/12/03 10:57:28 2019/12/03
【摘要】 Quartz是一个开源的作业调度框架,它完全由Java写成,并设计用于J2SE和J2EE应用中。它提供了巨大的灵 活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。这篇博客比较详细的描述了华为鲲鹏云服务器ECS KC1上的成功安装。

一、 软件介绍

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

成功显示如下:

 

1575340716913898.png

# 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服务器环境测试,如在使用本文档的安装方法进行安装过程中,可能由于系统版本、软件依赖或其他原因造成软件安装不成功,请自行解决或联系我们,请事先备份相关重要数据、资料。

使用文档风险由用户自行承担,在适用法律允许的最大范围内,对因使用或不能使用本文档所产生的损害及风险,包括但不限于直接或间接的个人损害、商业赢利的丧失、贸易中断、商业信息的丢失或任何其它经济损失,我司不承担任何责任。

我司不担保所提供的软件功能及服务一定能满足用户的要求,也不担保服务不会中断,对服务的及时性、安全性、真实性、准确性都不作担保。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。