QuickTask动态脚本支持框架整体介绍篇

栏目: Groovy · 发布时间: 7年前

内容简介:上篇博文:一个简单的动态脚本调度框架,支持运行时,实时增加,删除和修改动态脚本,可用于后端的进行接口验证、数据订正,执行定时任务或校验脚本本项目主要涉及到的技术栈:
QuickTask动态脚本支持框架整体介绍篇

上篇博文: 动态任务执行框架想法篇

Quick-Task 动态脚本支持框架整体介绍篇

一个简单的动态脚本调度框架,支持运行时,实时增加,删除和修改动态脚本,可用于后端的进行接口验证、数据订正,执行定时任务或校验脚本

本项目主要涉及到的技术栈:

  • groovyEngine (groovy脚本加载执行)
  • commons-io (文件变动监听)

I. 使用姿势

1. pom配置

添加仓库地址

<repositories>
    <repository>
        <id>yihui-maven-repo</id>
        <url>https://raw.githubusercontent.com/liuyueyi/maven-repository/master/repository</url>
    </repository>
</repositories>

添加项目依赖

<dependency>
    <groupId>com.git.hui</groupId>
    <artifactId>task-core</artifactId>
    <version>0.0.1</version>
</dependency>

2. 使用demo

a. 源码方式

源码下载之后的使用case,可以参考 com.git.hui.task.AppLaunch ,运行main方法,监听 ./task-core/src/test/java/com/git/hui/task 目录下脚本的变动即可

b. jar包引用

首先准备一个Groovy脚本,放在指定的目录下,如 /tmp/script/DemoScript.groovy

package com.git.hui.task

import com.git.hui.task.api.ITask

class DemoScript implements ITask {
    @Override
    void run() {
        println name() + " | now > : >>" + System.currentTimeMillis()
    }

    @Override
    void interrupt() {
        println "over"
    }
}

对应的启动类可以如下

public class AppRunner {

    // main 方式
    public static void main(String[] args) throws Exception {
        new ScriptExecuteEngine().run("/tmp/script/");
        Thread.sleep(24 *60 * 60 * 1000);
    }
    
    // junit 方式启动
    @Test
    public void testTaskRun() {
        new ScriptExecuteEngine().run("/tmp/script/");
        Thread.sleep(24 *60 * 60 * 1000);
    }
}

c. 测试

应用启动完毕之后

/tmp/script/DemoScript.groovy
/tmp/script
/tmp/script

注意不要在groovy脚本中执行 System.exit(1) , 会导致整个项目都停止运行

II. 设计原理

基本结构如下图

QuickTask动态脚本支持框架整体介绍篇

从图中基本上也可以看出,这个项目的结构属于非常轻量级的,核心角色,有下面几个

  • Task : 具体的任务脚本
  • TaskContainer: 持有执行任务的容器
  • TaskChangeWatcher: 任务观察器,用于查看是否有新增、删除or修改任务,从而卸载旧的任务,并加载新的任务

另外一块属于扩展方面的插件体系,目前并没有给与实现,若将本框架继承在Spring生态体系中运行时,这些插件的支持就特别简单了

  • RedisTemplate
  • RestTemplate
  • AmqpTemplate
  • xxxTemplate

III. 其他

0. 相关

博文:

项目:

1.一灰灰Blog: https://liuyueyi.github.io/hexblog

一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛

2. 声明

尽信书则不如,已上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激

  • 微博地址:小灰灰Blog
  • QQ: 一灰灰/3302797840

以上所述就是小编给大家介绍的《QuickTask动态脚本支持框架整体介绍篇》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Algorithm Design

Algorithm Design

Jon Kleinberg、Éva Tardos / Addison-Wesley / 2005-3-26 / USD 144.20

Algorithm Design introduces algorithms by looking at the real-world problems that motivate them. The book teaches students a range of design and analysis techniques for problems that arise in compu......一起来看看 《Algorithm Design》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具