Browse Source

1.6.5 release

hugui 9 years ago
parent
commit
81f92f664d

+ 16 - 11
README.md

@@ -30,6 +30,8 @@ LTS支持任务类型:
 * 定时任务:在指定时间点执行的任务,譬如 今天3点执行(单次)。
 * Cron任务:CronExpression,和quartz类似(但是不是使用quartz实现的)譬如 0 0/1 * * * ?
 
+支持动态修改任务参数,任务执行时间等设置,支持后台动态添加任务,支持Cron任务暂停,支持手动停止正在执行的任务(有条件),支持任务的监控统计,支持各个节点的任务执行监控,JVM监控等等.
+
 ## 架构图
 
 ![LTS architecture](http://git.oschina.net/hugui/light-task-scheduler/raw/master/docs/LTS_architecture.png?dir=0&filepath=docs%2FLTS_architecture.png&oid=1e5daa62b8d032daaa47eab4a84ab1d4c8962c33&sha=774aa73d186470aedbb8f4da3c04a86a6022be05)
@@ -304,9 +306,6 @@ public class LTSSpringConfig implements ApplicationContextAware {
 |lts.monitor.interval|可选|1|JobClient,TaskTracker,JobTracker|addConfig("lts.monitor.interval", "2")|分钟,整数,建议1-5分钟|
 |lts.remoting|可选|netty|JobClient,TaskTracker,JobTracker|addConfig("lts.remoting", "netty")|底层通讯框架,可选值netty和mina,可以混用,譬如JobTracker是netty, JobClient采用mina|
 |lts.remoting.serializable.default|可选|fastjson|JobClient,TaskTracker,JobTracker|addConfig("lts.remoting.serializable.default", "fastjson")|底层通讯默认序列化方式,可选值 fastjson, hessian2 ,java,底层会自动识别你请求的序列化方式,然后返回数据也是采用与请求的序列化方式返回,假设JobTracker设置的是fastjson,而JobClient是hessian2,那么JobClient提交任务的时候,序列化方式是hessian2,当JobTracker收到请求的时候采用hessian2解码,然后也会将响应数据采用hessian2编码返回给JobClient|
-|lts.compiler|可选|javassist|JobClient,TaskTracker,JobTracker|addConfig("lts.compiler", "javassist")|java编译器,可选值 jdk, javassist(需要引入javassist包)|
-
-
 
 
 ##使用建议
@@ -380,6 +379,18 @@ public class TestJobRunnerTester extends JobRunnerTester {
 }
 ```
 
+##Spring Quartz Cron任务无缝接入
+对于Quartz的Cron任务只需要在Spring配置中增加一下代码就可以接入LTS平台
+
+```xml
+<bean class="com.lts.spring.quartz.QuartzLTSProxyBean">
+    <property name="clusterName" value="test_cluster"/>
+    <property name="registryAddress" value="zookeeper://127.0.0.1:2181"/>
+    <property name="nodeGroup" value="quartz_test_group"/>
+</bean>
+```
+
+
 ##多网卡选择问题
 当机器有内网两个网卡的时候,有时候,用户想让LTS的流量走外网网卡,那么需要在host中,把主机名称的映射地址改为外网网卡地址即可,内网同理。
 
@@ -390,14 +401,8 @@ public class TestJobRunnerTester extends JobRunnerTester {
 如果在节点启动的时候设置节点标识,LTS会默认设置一个UUID为节点标识,可读性会比较差,但是能保证每个节点的唯一性,如果用户能自己保证节点标识的唯一性,可以通过 `setIdentity` 来设置,譬如如果每个节点都是部署在一台机器(一个虚拟机)上,那么可以将identity设置为主机名称
 
 ##SPI扩展说明
-###LTS-Logger扩展
-1. 引入`lts-logger-api-{version}.jar`
-2. 实现`JobLogger`和`JobLoggerFactory`接口
-3. 在 resources `META-INF/lts/com.lts.biz.logger.JobLoggerFactory`文件,文件内容为`xxx=com.lts.biz.logger.xxx.XxxJobLoggerFactory`
-4. 使用自己的logger扩展,修改jobtracker参数配置 configs.job.logger=xxx。(如果你自己引入JobTracker jar包的方式的话,使用 `jobtracker.addConfig("job.logger", "xxx"))`
-
-###LTS-Queue扩展
-实现方式和LTS-Logger扩展类似,具体参考`lts-queue-mysql`或`lts-queue-mongo`模块的实现
+支持JobLogger,JobQueue等等的SPI扩展
+
 ##和其它解决方案比较
 ###和MQ比较
 见docs/LTS业务场景说明.pdf

+ 1 - 1
build.cmd

@@ -4,7 +4,7 @@ start mvn clean install -DskipTests
 echo "LTS: mvn clean install -DskipTests"
 echo "LTS: After sub window finished, close it , and press any key to continue" & pause>nul
 
-set VERSION=1.6.5-SNAPSHOT
+set VERSION=1.6.5
 set BASE_HOME=%~dp0%
 set DIST_BIN_DIR=lts-%VERSION%-bin
 

+ 2 - 2
build.sh

@@ -1,6 +1,6 @@
 #!/usr/bin/env bash
 
-VERSION="1.6.5-SNAPSHOT"
+VERSION="1.6.5"
 
 LTS_BIN="${BASH_SOURCE-$0}"
 LTS_BIN="$(dirname "${LTS_BIN}")"
@@ -28,7 +28,7 @@ TaskTracker_Startup_Dir="$LTS_Bin_Dir/lts-startup/lts-startup-tasktracker"
 cd $TaskTracker_Startup_Dir
 mvn assembly:assembly -DskipTests
 
-# TaskTracker 打包
+# LTS-Monitor 打包
 LTS_Monitor_Startup_Dir="$LTS_Bin_Dir/lts-monitor"
 cd $LTS_Monitor_Startup_Dir
 mvn assembly:assembly -DskipTests

BIN
docs/LTS_architecture.png


BIN
docs/LTS业务场景说明.pdf


+ 1 - 1
lts-admin/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>lts-parent</artifactId>
         <groupId>com.lts</groupId>
-        <version>1.6.5-SNAPSHOT</version>
+        <version>1.6.5</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <packaging>war</packaging>

+ 1 - 1
lts-core/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>lts-parent</artifactId>
         <groupId>com.lts</groupId>
-        <version>1.6.5-SNAPSHOT</version>
+        <version>1.6.5</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <packaging>jar</packaging>

+ 11 - 18
lts-core/src/main/java/com/lts/core/commons/utils/CharacterUtils.java

@@ -9,27 +9,23 @@ import java.util.regex.Pattern;
 public class CharacterUtils {
 
     /**
-     * @param strs
-     *        待转化字符串
-     * @return
-     * @author estone
-     * @description 下划线格式字符串转换成驼峰格式字符串
-     *              eg: player_id -> playerId;<br>
-     *              player_name -> playerName;
+     * 下划线格式字符串转换成驼峰格式字符串
+     * eg: player_id -> playerId;<br>
+     * player_name -> playerName;
      */
     public static String underScore2CamelCase(String strs) {
 
-        if(strs == null || strs.indexOf("_") < 0){
+        if (strs == null || !strs.contains("_")) {
             return strs;
         }
         StringBuilder sb = new StringBuilder("");
         String[] elems = strs.split("_");
-        for ( int i = 0 ; i < elems.length ; i++ ) {
+        for (int i = 0; i < elems.length; i++) {
             String elem = elems[i].toLowerCase();
-            if(i != 0 ){
+            if (i != 0) {
                 char first = elem.toCharArray()[0];
-                sb.append((char) (first - 32) + elem.substring(1));
-            }else{
+                sb.append((char) (first - 32)).append(elem.substring(1));
+            } else {
                 sb.append(elem);
             }
         }
@@ -37,11 +33,8 @@ public class CharacterUtils {
     }
 
     /**
-     * @param param
-     *        待转换字符串
-     * @return
-     * @author estone
-     * @description 驼峰格式字符串 转换成 下划线格式字符串
+     * @param param 待转换字符串
+     *              驼峰格式字符串 转换成 下划线格式字符串
      *              eg: playerId -> player_id;<br>
      *              playerName -> player_name;
      */
@@ -54,7 +47,7 @@ public class CharacterUtils {
         Matcher mc = p.matcher(param);
         int i = 0;
         while (mc.find()) {
-            builder.replace(mc.start() + i,mc.end() + i,"_" + mc.group().toLowerCase());
+            builder.replace(mc.start() + i, mc.end() + i, "_" + mc.group().toLowerCase());
             i++;
         }
         if ('_' == builder.charAt(0)) {

+ 1 - 1
lts-core/src/main/java/com/lts/core/support/Version.java

@@ -20,7 +20,7 @@ public final class Version {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(Version.class);
 
-    private static final String VERSION = getVersion(Version.class, "1.6.5-SNAPSHOT");
+    private static final String VERSION = getVersion(Version.class, "1.6.5");
 
     static {
         // 检查是否存在重复的jar包

+ 1 - 1
lts-example/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>lts-parent</artifactId>
         <groupId>com.lts</groupId>
-        <version>1.6.5-SNAPSHOT</version>
+        <version>1.6.5</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>lts-example</artifactId>

+ 1 - 1
lts-jobclient/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>lts-parent</artifactId>
         <groupId>com.lts</groupId>
-        <version>1.6.5-SNAPSHOT</version>
+        <version>1.6.5</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

+ 1 - 1
lts-jobtracker/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>lts-parent</artifactId>
         <groupId>com.lts</groupId>
-        <version>1.6.5-SNAPSHOT</version>
+        <version>1.6.5</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

+ 1 - 1
lts-monitor/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>lts-parent</artifactId>
         <groupId>com.lts</groupId>
-        <version>1.6.5-SNAPSHOT</version>
+        <version>1.6.5</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

+ 1 - 1
lts-spring/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>lts-parent</artifactId>
         <groupId>com.lts</groupId>
-        <version>1.6.5-SNAPSHOT</version>
+        <version>1.6.5</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <packaging>jar</packaging>

+ 1 - 1
lts-spring/src/main/java/com/lts/spring/quartz/QuartzLTSProxyAgent.java

@@ -141,7 +141,7 @@ class QuartzLTSProxyAgent {
 
         if (CollectionUtils.isNotEmpty(failedJobs)) {
             // 没提交成功要重试 3S 之后重试
-            LOGGER.info("=============LTS=========== Sleep 3 seconds and retry");
+            LOGGER.info("=============LTS=========== Sleep 3 Seconds and retry");
             QuietUtils.sleep(3000);
             submitJobs0(jobClient, failedJobs);
             return;

+ 6 - 2
lts-spring/src/main/java/com/lts/spring/quartz/QuartzSchedulerBeanTargetEditor.java

@@ -28,6 +28,9 @@ class QuartzSchedulerBeanTargetEditor extends PropertyEditorSupport {
     @Override
     @SuppressWarnings({"unchecked"})
     public void setValue(Object value) {
+
+        List<Object> nativeQuartzTriggers = new ArrayList<Object>();
+
         if (value != null && value instanceof Collection) {
 
             Collection<Trigger> triggers = (Collection<Trigger>) value;
@@ -36,12 +39,13 @@ class QuartzSchedulerBeanTargetEditor extends PropertyEditorSupport {
                 if (trigger instanceof CronTriggerImpl) {
                     quartzCronJobs.add(buildQuartzCronJob((CronTriggerImpl) trigger));
                 } else {
-                    LOGGER.error("Can't Proxy " + trigger.getClass().getName());
+                    LOGGER.warn("Can't Proxy " + trigger.getClass().getName() + " Then Use Quartz Scheduler");
+                    nativeQuartzTriggers.add(trigger);
                 }
             }
             context.getAgent().startProxy(quartzCronJobs);
         }
-        super.setValue(new ArrayList<Trigger>(0));
+        super.setValue(nativeQuartzTriggers);
     }
 
     private QuartzCronJob buildQuartzCronJob(CronTriggerImpl cronTrigger) {

+ 1 - 1
lts-startup/lts-startup-admin/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>lts-startup</artifactId>
         <groupId>com.lts</groupId>
-        <version>1.6.5-SNAPSHOT</version>
+        <version>1.6.5</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

+ 1 - 1
lts-startup/lts-startup-jobtracker/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>lts-startup</artifactId>
         <groupId>com.lts</groupId>
-        <version>1.6.5-SNAPSHOT</version>
+        <version>1.6.5</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

+ 1 - 1
lts-startup/lts-startup-tasktracker/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>lts-startup</artifactId>
         <groupId>com.lts</groupId>
-        <version>1.6.5-SNAPSHOT</version>
+        <version>1.6.5</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

+ 1 - 1
lts-startup/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>lts-parent</artifactId>
         <groupId>com.lts</groupId>
-        <version>1.6.5-SNAPSHOT</version>
+        <version>1.6.5</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

+ 1 - 1
lts-tasktracker/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>lts-parent</artifactId>
         <groupId>com.lts</groupId>
-        <version>1.6.5-SNAPSHOT</version>
+        <version>1.6.5</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

+ 1 - 1
lts-tasktracker/src/main/java/com/lts/tasktracker/runner/JobRunnerDelegate.java

@@ -185,7 +185,7 @@ public class JobRunnerDelegate implements Runnable {
     private void checkInterrupted() {
         try {
             if (isInterrupted()) {
-                logger.info("Interrupted");
+                logger.info("SYSTEM:Interrupted");
             }
         } catch (Throwable t) {
             LOGGER.warn("checkInterrupted error", t);

+ 1 - 1
lts/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>lts-parent</artifactId>
         <groupId>com.lts</groupId>
-        <version>1.6.5-SNAPSHOT</version>
+        <version>1.6.5</version>
     </parent>
     <packaging>jar</packaging>
     <modelVersion>4.0.0</modelVersion>

+ 1 - 1
pom.xml

@@ -7,7 +7,7 @@
     <groupId>com.lts</groupId>
     <artifactId>lts-parent</artifactId>
     <packaging>pom</packaging>
-    <version>1.6.5-SNAPSHOT</version>
+    <version>1.6.5</version>
     <url>https://github.com/ltsopensource/light-task-scheduler.git</url>
     <modules>
         <module>lts-core</module>