Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >QuickTask动态脚本支持框架整体介绍篇

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

作者头像
一灰灰blog
发布于 2018-07-29 09:19:40
发布于 2018-07-29 09:19:40
6440
举报
文章被收录于专栏:小灰灰小灰灰
logo
logo

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

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

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

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

<!-- more -->

I. 使用姿势

1. pom配置

添加仓库地址

代码语言:txt
AI代码解释
复制
<repositories>
    <repository>
        <id>yihui-maven-repo</id>
        <url>https://raw.githubusercontent.com/liuyueyi/maven-repository/master/repository</url>
    </repository>
</repositories>

添加项目依赖

代码语言:txt
AI代码解释
复制
<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

代码语言:txt
AI代码解释
复制
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"
    }
}

对应的启动类可以如下

代码语言:txt
AI代码解释
复制
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 目录下的脚本
  • 测试异常的case (如非法的groovy文件,内部运行异常等...)

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

II. 设计原理

基本结构如下图

脚本框架.png
脚本框架.png

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

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

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

  • RedisTemplate
  • RestTemplate
  • AmqpTemplate
  • xxxTemplate

III. 其他

0. 相关

博文:

项目:

1. 一灰灰Bloghttps://liuyueyi.github.io/hexblog

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

2. 声明

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

3. 扫描关注

小灰灰Blog&公众号

QrCode
QrCode

知识星球

zhishi
zhishi

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Quick-Task 动态脚本支持框架之使用介绍篇
文章链接:https://liuyueyi.github.io/hexblog/2018/07/19/180719-Quick-Task-动态脚本支持框架之使用介绍篇/
一灰灰blog
2018/07/29
3920
Quick-Task 动态脚本支持框架之使用介绍篇
Quick-Task 动态脚本支持框架之结构设计篇
文章链接:https://liuyueyi.github.io/hexblog/2018/07/23/180723-Quick-Task-动态脚本支持框架之结构设计篇/
一灰灰blog
2018/07/29
6360
Quick-Task 动态脚本支持框架之结构设计篇
180723-Quick-Task 动态脚本支持框架之结构设计篇
文章链接:https://liuyueyi.github.io/hexblog/2018/07/23/180723-Quick-Task-动态脚本支持框架之结构设计篇/
一灰灰blog
2022/01/17
2680
180723-Quick-Task 动态脚本支持框架之结构设计篇
Quick-Task 动态脚本支持框架之任务动态加载
前面几篇博文分别介绍了整个项目的基本架构,使用说明,以及整体框架的设计与实现初稿,接下来则进入更细节的实现篇,将整个工程中核心实现捞出来,从为什么这么设计到最终的实现给予说明
一灰灰blog
2018/07/29
5000
Quick-Task 动态脚本支持框架之任务动态加载
Quick-Task 动态脚本支持框架之Groovy脚本加载执行
上一篇简答说了如何判断有任务动态添加、删除或更新,归于一点就是监听文件的变化,判断目录下的Groovy文件是否有新增删除和改变,从而判定是否有任务的变更;
一灰灰blog
2018/08/07
1.2K0
Quick-Task 动态脚本支持框架之Groovy脚本加载执行
借助GitHub搭建属于自己的maven仓库
在Github上也写了不少的项目了,然后经常遇到的一个问题就是,很多自己写的项目,希望在另外一个项目中使用时,只能把这个项目下载下来,相当之不方便
一灰灰blog
2018/02/13
1.8K0
借助GitHub搭建属于自己的maven仓库
Quick-Media 中文二维码支持
Quick-Media 项目提供了一些列多媒体操作的开箱即用工具类,比如图片编辑合成,markdown/html/svg渲染,音频处理;当然还有本文重点说明的二维码生成解析
一灰灰blog
2020/06/30
5520
Quick-Media 中文二维码支持
Quick-Media 中文二维码支持
Quick-Media 项目提供了一些列多媒体操作的开箱即用工具类,比如图片编辑合成,markdown/html/svg渲染,音频处理;当然还有本文重点说明的二维码生成解析
一灰灰blog
2020/07/01
3860
Quick-Media 中文二维码支持
SpringBoot 系列教程 Mybatis+xml 整合篇
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
一灰灰blog
2020/02/11
9750
SpringBoot 系列教程 Mybatis+xml 整合篇
【SpringBoot Mybatis系列】MapperMapper接口与Sql绑定几种姿势
通常我们在使用Mybatis进行开发时,会选择xml文件来写对应的sql,然后将Mapper接口与sql的xml文件建立绑定关系,然后在项目中调用mapper接口就可以执行对应的sql
一灰灰blog
2021/07/26
1.1K0
【SpringBoot Mybatis系列】MapperMapper接口与Sql绑定几种姿势
SpringBoot高级篇搜索Solr之 文档新增与修改使用姿势
大多涉及到数据的处理,无非CURD四种操作,对于搜索SOLR而言,基本操作也可以说就这么几种,在实际应用中,搜索条件的多样性才是重点,我们在进入复杂的搜索之前,先来看一下如何新增和修改文档
一灰灰blog
2019/07/02
1.2K0
SpringBoot高级篇搜索Solr之 文档新增与修改使用姿势
SpringBoot系列教程JPA之基础环境搭建
JPA(Java Persistence API)Java持久化API,是 Java 持久化的标准规范,Hibernate是持久化规范的技术实现,而Spring Data JPA是在 Hibernate 基础上封装的一款框架。JPA作为标准,实际上并没有说局限于某个固定的数据源,事实上mysql,mongo, solr都是ok的。接下来我们将介绍下springboot结合jpa 来实现mysql的curd以及更加复杂一点的sql支持
一灰灰blog
2019/07/02
5930
SpringBoot系列教程JPA之基础环境搭建
SpringBoot实战基于异常日志的邮件报警
相信所有奋斗在一线的小伙伴,会很关心自己的系统的运行情况,一般来说,基础设施齐全一点的公司都会有完善的报警方案,那么如果我们是一个小公司呢,不能因为基础设施没有,就失去对象的感知能力吧;如果我们的系统大量异常却不能实时的触达给我们,那么也就只会有一个结果--杀个程序猿祭天
一灰灰blog
2021/08/12
6630
SpringBoot实战基于异常日志的邮件报警
徒手撸一个扫码登录示例工程
不知道是不是微信的原因,现在出现扫码登录的场景越来越多了,作为一个有追求、有理想新四好码农,当然得紧跟时代的潮流,得徒手撸一个以儆效尤
一灰灰blog
2020/04/24
6191
徒手撸一个扫码登录示例工程
SpringBoot系列教程web篇之Thymeleaf环境搭建
上一篇博文介绍了如何使用Freemaker引擎搭建web项目,这一篇我们则看一下另外一个常见的页面渲染引擎Thymeleaf如何搭建一个web项目
一灰灰blog
2019/08/23
5410
SpringBoot系列教程web篇之Thymeleaf环境搭建
Spring MVC之基于xml配置的web应用构建
直接用SpringBoot构建web应用可以说非常非常简单了,在使用SpringBoot构建后端服务之前,一直用的是Spring + SpringMVC基于xml的配置方式来玩的,所以在正式进入SpringBoot Web篇之前,有必要看一下不用SpringBoot应该怎么玩的,也因此方便凸显SpringBoot的优越性
一灰灰blog
2019/03/17
1.1K0
Spring MVC之基于xml配置的web应用构建
SpringBoot基础系列@Value 之字面量及 SpEL使用知识点介绍篇
[【SpringBoot 基础系列】@Value 之字面量及 SpEL 知识点介绍篇](http://mp.weixin.qq.com/s?__biz=MzU3MTAzNTMzMQ==&mid=224
一灰灰blog
2021/06/21
3721
SpringBoot基础系列@Value 之字面量及 SpEL使用知识点介绍篇
【SpringBoot + Mybatis系列】Mapper接口注册的几种方式
SpringBoot项目中借助Mybatis来操作数据库,对大部分java技术栈的小伙伴来说,并不会陌生;我们知道,使用mybatis,一般会有下面几个
一灰灰blog
2021/07/26
1K0
【SpringBoot + Mybatis系列】Mapper接口注册的几种方式
SpringBoot基础系列@Value 之字面量及 SpEL使用知识点介绍篇
承接上一篇博文【SpringBoot 基础系列】@Value 中哪些你不知道的知识点 中提及到但没有细说的知识点,这一篇博文将来看一下@Value除了绑定配置文件中的属性配置之外,另外支持的两种姿势
一灰灰blog
2021/06/16
6951
SpringBoot基础系列@Value 之字面量及 SpEL使用知识点介绍篇
SpringBoot系列教程web篇之重定向
前面介绍了spring web篇数据返回的几种常用姿势,当我们在相应一个http请求时,除了直接返回数据之外,还有另一种常见的case -> 重定向;
一灰灰blog
2019/10/12
3.4K0
SpringBoot系列教程web篇之重定向
推荐阅读
相关推荐
Quick-Task 动态脚本支持框架之使用介绍篇
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档