├── README.md
├── lts-example-jobclient
├── lts-example-jobclient-java
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── github
│ │ │ └── ltsopensource
│ │ │ └── example
│ │ │ └── java
│ │ │ ├── JobCompletedHandlerImpl.java
│ │ │ ├── Main.java
│ │ │ └── TestSubmit.java
│ │ └── resources
│ │ ├── log4j.properties
│ │ └── lts.properties
├── lts-example-jobclient-spring-annotation
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── github
│ │ │ └── ltsopensource
│ │ │ └── example
│ │ │ ├── JobClientConfig.java
│ │ │ ├── JobCompletedHandlerImpl.java
│ │ │ └── Main.java
│ │ └── resources
│ │ ├── log4j.properties
│ │ ├── lts-jobclient.xml
│ │ └── lts.properties
├── lts-example-jobclient-spring-xml
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── github
│ │ │ └── ltsopensource
│ │ │ └── example
│ │ │ └── spring
│ │ │ ├── JobCompletedHandlerImpl.java
│ │ │ └── Main.java
│ │ └── resources
│ │ ├── log4j.properties
│ │ ├── lts-jobclient.xml
│ │ └── lts.properties
├── lts-example-jobclient-springboot
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── github
│ │ │ └── ltsopensource
│ │ │ └── example
│ │ │ └── springboot
│ │ │ ├── Application.java
│ │ │ ├── JobClientReferenceBean.java
│ │ │ ├── JobCompletedHandlerImpl.java
│ │ │ └── MasterNodeChangeListener.java
│ │ └── resources
│ │ ├── application.properties
│ │ └── log4j.properties
└── pom.xml
├── lts-example-jobtracker
├── lts-example-jobtracker-java
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── github
│ │ │ └── ltsopensource
│ │ │ └── example
│ │ │ └── java
│ │ │ └── Main.java
│ │ └── resources
│ │ ├── log4j.properties
│ │ └── lts.properties
├── lts-example-jobtracker-spring-annotaion
│ ├── lts-example-jobtracker-spring-annotaion.iml
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── github
│ │ │ └── ltsopensource
│ │ │ └── example
│ │ │ ├── JobTrackerConfig.java
│ │ │ └── Main.java
│ │ └── resources
│ │ ├── log4j.properties
│ │ ├── lts-jobtracker.xml
│ │ └── lts.properties
├── lts-example-jobtracker-spring-xml
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── github
│ │ │ └── ltsopensource
│ │ │ └── example
│ │ │ └── spring
│ │ │ └── Main.java
│ │ └── resources
│ │ ├── log4j.properties
│ │ └── lts-jobtracker.xml
├── lts-example-jobtracker-springboot
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── github
│ │ │ └── ltsopensource
│ │ │ └── example
│ │ │ └── springboot
│ │ │ ├── Application.java
│ │ │ └── MasterNodeChangeListener.java
│ │ └── resources
│ │ ├── application.properties
│ │ └── log4j.properties
└── pom.xml
├── lts-example-monitor
├── lts-example-monitor-springboot
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── github
│ │ │ └── ltsopensource
│ │ │ └── example
│ │ │ └── springboot
│ │ │ └── Application.java
│ │ └── resources
│ │ ├── application.properties
│ │ └── log4j.properties
└── pom.xml
├── lts-example-quartz
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── github
│ │ └── ltsopensource
│ │ └── example
│ │ ├── Main.java
│ │ ├── QuartzTest.java
│ │ └── QuartzTestJob.java
│ └── resources
│ ├── log4j.properties
│ ├── lts-quartz.xml
│ └── lts.properties
├── lts-example-tasktracker
├── lts-example-tasktarcker-springboot
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── github
│ │ │ └── ltsopensource
│ │ │ └── example
│ │ │ └── springboot
│ │ │ ├── Application.java
│ │ │ ├── JobRunnerImpl.java
│ │ │ └── MasterNodeChangeListener.java
│ │ └── resources
│ │ ├── application.properties
│ │ └── log4j.properties
├── lts-example-tasktracker-java
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── github
│ │ │ └── ltsopensource
│ │ │ └── example
│ │ │ └── java
│ │ │ ├── Main.java
│ │ │ └── TestJobRunner.java
│ │ └── resources
│ │ ├── log4j.properties
│ │ └── lts.properties
├── lts-example-tasktracker-spring-annotation-shard
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── github
│ │ │ └── ltsopensource
│ │ │ └── example
│ │ │ ├── JobScheduler.java
│ │ │ ├── JobScheduler2.java
│ │ │ ├── Main.java
│ │ │ └── SpringBean.java
│ │ └── resources
│ │ ├── log4j.properties
│ │ └── lts-tasktracker-shard-annotaion.xml
├── lts-example-tasktracker-spring-annotation
│ ├── lts-example-tasktracker-spring-annotation.iml
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── github
│ │ │ └── ltsopensource
│ │ │ └── example
│ │ │ ├── Main.java
│ │ │ ├── SpringAnnotationJobRunner.java
│ │ │ ├── SpringBean.java
│ │ │ └── TaskTrackerConfig.java
│ │ └── resources
│ │ ├── log4j.properties
│ │ ├── lts-tasktracker.xml
│ │ └── lts.properties
├── lts-example-tasktracker-spring-xml-shard
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── github
│ │ │ └── ltsopensource
│ │ │ └── example
│ │ │ ├── Main.java
│ │ │ ├── SpringBean.java
│ │ │ └── XmlJobScheduler.java
│ │ └── resources
│ │ ├── log4j.properties
│ │ └── lts-tasktracker-shard-xml.xml
├── lts-example-tasktracker-spring-xml
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── github
│ │ │ └── ltsopensource
│ │ │ └── example
│ │ │ └── spring
│ │ │ ├── Main.java
│ │ │ ├── SpringAnnotationJobRunner.java
│ │ │ └── SpringBean.java
│ │ └── resources
│ │ ├── log4j.properties
│ │ └── lts-tasktracker.xml
├── lts-example-tasktracker-springboot-shard
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── github
│ │ │ └── ltsopensource
│ │ │ └── example
│ │ │ ├── Application.java
│ │ │ ├── JobScheduler.java
│ │ │ ├── JobScheduler2.java
│ │ │ └── SpringBean.java
│ │ └── resources
│ │ ├── application.properties
│ │ └── log4j.properties
├── lts-example-tasktracker-tester
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ └── java
│ │ └── com
│ │ └── github
│ │ └── ltsopensource
│ │ └── example
│ │ ├── TestJobRunner.java
│ │ └── TestJobRunnerTester.java
└── pom.xml
└── pom.xml
/README.md:
--------------------------------------------------------------------------------
1 | # lts-examples
2 |
--------------------------------------------------------------------------------
/lts-example-jobclient/lts-example-jobclient-java/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | lts-example-jobclient
7 | com.github.ltsopensource
8 | 1.7.2-SNAPSHOT
9 |
10 | 4.0.0
11 |
12 | lts-example-jobclient-java
13 |
14 |
15 |
--------------------------------------------------------------------------------
/lts-example-jobclient/lts-example-jobclient-java/src/main/java/com/github/ltsopensource/example/java/JobCompletedHandlerImpl.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example.java;
2 |
3 | import com.github.ltsopensource.core.commons.utils.CollectionUtils;
4 | import com.github.ltsopensource.core.domain.JobResult;
5 | import com.github.ltsopensource.jobclient.support.JobCompletedHandler;
6 |
7 | import java.text.SimpleDateFormat;
8 | import java.util.Date;
9 | import java.util.List;
10 |
11 | /**
12 | * @author Robert HG (254963746@qq.com) on 4/17/16.
13 | */
14 | public class JobCompletedHandlerImpl implements JobCompletedHandler {
15 |
16 | @Override
17 | public void onComplete(List jobResults) {
18 | // 任务执行反馈结果处理
19 | if (CollectionUtils.isNotEmpty(jobResults)) {
20 | for (JobResult jobResult : jobResults) {
21 | System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + " 任务执行完成:" + jobResult);
22 | }
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/lts-example-jobclient/lts-example-jobclient-java/src/main/java/com/github/ltsopensource/example/java/Main.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example.java;
2 |
3 | import com.github.ltsopensource.core.commons.utils.DateUtils;
4 | import com.github.ltsopensource.core.domain.Job;
5 | import com.github.ltsopensource.jobclient.JobClient;
6 | import com.github.ltsopensource.jobclient.JobClientBuilder;
7 | import com.github.ltsopensource.jobclient.domain.Response;
8 |
9 | import java.util.Date;
10 |
11 | /**
12 | * @author Robert HG (254963746@qq.com) on 4/17/16.
13 | */
14 | public class Main {
15 |
16 | public static void main(String[] args) {
17 |
18 | // 方式1
19 | // JobClient jobClient = new RetryJobClient();
20 | // jobClient.setNodeGroup("test_jobClient");
21 | // jobClient.setClusterName("test_cluster");
22 | // jobClient.setRegistryAddress("zookeeper://127.0.0.1:2181");
23 | // jobClient.setJobCompletedHandler(new JobCompletedHandlerImpl());
24 | // jobClient.addConfig("job.fail.store", "mapdb");
25 | // jobClient.start();
26 |
27 | // 方式2
28 | JobClient jobClient = new JobClientBuilder()
29 | .setPropertiesConfigure("lts.properties")
30 | .setJobCompletedHandler(new JobCompletedHandlerImpl())
31 | .build();
32 |
33 | jobClient.start();
34 |
35 | submitCronJob(jobClient);
36 | submitRepeatJob(jobClient);
37 | submitRealtimeJob(jobClient);
38 | submitTriggerTimeJob(jobClient);
39 | }
40 |
41 | private static void submitCronJob(JobClient jobClient) {
42 | Job job = new Job();
43 | job.setTaskId("t_cron_555");
44 | job.setParam("shopId", "1122222221");
45 | job.setTaskTrackerNodeGroup("test_trade_TaskTracker"); // 执行要执行该任务的taskTracker的节点组名称
46 | job.setNeedFeedback(true);
47 | job.setReplaceOnExist(true); // 当任务队列中存在这个任务的时候,是否替换更新
48 | job.setCronExpression("0 0/1 * * * ?");
49 | Response response = jobClient.submitJob(job);
50 | System.out.println(response);
51 | }
52 |
53 | private static void submitRepeatJob(JobClient jobClient) {
54 | Job job = new Job();
55 | job.setTaskId("t_repeat_555");
56 | job.setParam("shopId", "1122222221");
57 | job.setTaskTrackerNodeGroup("test_trade_TaskTracker");
58 | job.setNeedFeedback(true);
59 | job.setReplaceOnExist(true); // 当任务队列中存在这个任务的时候,是否替换更新
60 | job.setRepeatCount(50); // 一共执行50次
61 | job.setRepeatInterval(50 * 1000L); // 50s 执行一次
62 | Response response = jobClient.submitJob(job);
63 | System.out.println(response);
64 | }
65 |
66 | private static void submitRealtimeJob(JobClient jobClient) {
67 | Job job = new Job();
68 | job.setTaskId("t_realtime_555");
69 | job.setParam("shopId", "1122222221");
70 | job.setTaskTrackerNodeGroup("test_trade_TaskTracker");
71 | job.setNeedFeedback(true);
72 | job.setReplaceOnExist(true); // 当任务队列中存在这个任务的时候,是否替换更新
73 | Response response = jobClient.submitJob(job);
74 | System.out.println(response);
75 | }
76 |
77 | private static void submitTriggerTimeJob(JobClient jobClient) {
78 | Job job = new Job();
79 | job.setTaskId("t_trigger_time_555");
80 | job.setParam("shopId", "1122222221");
81 | job.setTaskTrackerNodeGroup("test_trade_TaskTracker");
82 | job.setNeedFeedback(true);
83 | job.setReplaceOnExist(true); // 当任务队列中存在这个任务的时候,是否替换更新
84 | job.setTriggerTime(DateUtils.addHour(new Date(), 1).getTime()); // 1 小时之后执行
85 | Response response = jobClient.submitJob(job);
86 | System.out.println(response);
87 | }
88 |
89 | }
90 |
--------------------------------------------------------------------------------
/lts-example-jobclient/lts-example-jobclient-java/src/main/java/com/github/ltsopensource/example/java/TestSubmit.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example.java;
2 |
3 | import com.github.ltsopensource.core.commons.utils.StringUtils;
4 | import com.github.ltsopensource.core.domain.Job;
5 | import com.github.ltsopensource.core.exception.JobSubmitException;
6 | import com.github.ltsopensource.jobclient.JobClient;
7 | import com.github.ltsopensource.jobclient.JobClientBuilder;
8 | import com.github.ltsopensource.jobclient.domain.Response;
9 |
10 | import java.io.BufferedReader;
11 | import java.io.IOException;
12 | import java.io.InputStreamReader;
13 | import java.text.ParseException;
14 | import java.text.SimpleDateFormat;
15 |
16 | /**
17 | * Created by hugui.hg on 4/23/16.
18 | */
19 | public class TestSubmit {
20 |
21 | static JobClient jobClient;
22 |
23 | public static void main(String[] args) throws IOException {
24 | // 方式2
25 | jobClient = new JobClientBuilder()
26 | .setPropertiesConfigure("lts.properties")
27 | .setJobCompletedHandler(new JobCompletedHandlerImpl())
28 | .build();
29 |
30 | jobClient.start();
31 |
32 | startConsole();
33 | }
34 |
35 | private static int mode = 2;
36 |
37 | public static void startConsole() throws IOException {
38 |
39 | BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));
40 |
41 | String help = "命令参数: \n" +
42 | "\t1:cronExpression模式,如 0 0/1 * * * ?(一分钟执行一次), \n\t2:指定时间模式 yyyy-MM-dd HH:mm:ss,在执行时间模式下,如果字符串now,表示立即执行 \n" +
43 | "\tquit:退出\n" +
44 | "\thelp:帮助";
45 | System.out.println(help);
46 | System.out.println("指定时间模式:");
47 |
48 | Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
49 | @Override
50 | public void run() {
51 | jobClient.stop();
52 | }
53 | }));
54 |
55 | String input;
56 | while (!"quit".equals(input = buffer.readLine())) {
57 | try {
58 | if ("now".equals(input)) {
59 | input = "";
60 | }
61 | if ("help".equals(input)) {
62 | System.out.println(help);
63 | } else if ("1".equals(input)) {
64 | mode = 1;
65 | } else if ("2".equals(input)) {
66 | mode = 2;
67 | } else {
68 | if (mode == 1) {
69 | submitWithCronExpression(jobClient, input);
70 | } else if (mode == 2) {
71 | submitWithTrigger(jobClient, input);
72 | }
73 | }
74 |
75 | if (mode == 1) {
76 | System.out.print("cronExpression模式:");
77 | } else if (mode == 2) {
78 | System.out.print("指定时间模式:");
79 | }
80 |
81 | } catch (Exception e) {
82 | System.out.println("输入错误");
83 | }
84 | }
85 | System.exit(0);
86 | }
87 |
88 | public static void submitWithCronExpression(final JobClient jobClient, String cronExpression) throws ParseException, JobSubmitException {
89 | Job job = new Job();
90 | // 必填,尽量taskId 有一定规律性,能让自己识别
91 | job.setTaskId(StringUtils.generateUUID());
92 | // 任务的参数,value必须为字符串
93 | job.setParam("shopId", "111");
94 | // 执行节点的group名称
95 | job.setTaskTrackerNodeGroup("test_trade_TaskTracker");
96 | // 是否接收执行反馈消息 jobClient.setJobFinishedHandler(new JobFinishedHandlerImpl()); 中接受
97 | job.setNeedFeedback(true);
98 | // 这个是 cron expression 和 quartz 一样,可选
99 | job.setCronExpression(cronExpression);
100 | // 这个是指定执行时间,可选
101 | // job.setTriggerTime(new Date());
102 | // 当 cronExpression 和 triggerTime 都不设置的时候,默认是立即执行任务
103 | // response 返回提交成功还是失败
104 | Response response = jobClient.submitJob(job);
105 |
106 |
107 | System.out.println(response);
108 | }
109 |
110 | public static void submitWithTrigger(final JobClient jobClient, String triggerTime) throws ParseException, JobSubmitException {
111 | Job job = new Job();
112 | job.setTaskId(StringUtils.generateUUID());
113 | job.setParam("shopId", "111");
114 | job.setMaxRetryTimes(5);
115 | job.setTaskTrackerNodeGroup("test_trade_TaskTracker");
116 | job.setNeedFeedback(true);
117 | if (triggerTime != null && !"".equals(triggerTime.trim())) {
118 | job.setTriggerTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(triggerTime).getTime());
119 | }
120 | Response response = jobClient.submitJob(job);
121 | System.out.println(response);
122 | }
123 | }
124 |
--------------------------------------------------------------------------------
/lts-example-jobclient/lts-example-jobclient-java/src/main/resources/log4j.properties:
--------------------------------------------------------------------------------
1 |
2 | log4j.rootLogger=INFO,stdout
3 |
4 | log4j.appender.stdout.Threshold=INFO
5 | log4j.appender.stdout=org.apache.log4j.ConsoleAppender
6 | log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
7 | log4j.appender.stdout.layout.ConversionPattern=%d [%t] (%F:%L) %-5p %c %x - %m%n
--------------------------------------------------------------------------------
/lts-example-jobclient/lts-example-jobclient-java/src/main/resources/lts.properties:
--------------------------------------------------------------------------------
1 | lts.jobclient.cluster-name=test_cluster
2 | lts.jobclient.registry-address=zookeeper://127.0.0.1:2181
3 | lts.jobclient.node-group=test_jobClient
4 | lts.jobclient.use-retry-client=true
5 | lts.jobclient.configs.job.fail.store=mapdb
6 |
7 |
8 | #LTS.JOBCLIENT.CLUSTER-NAME=test_cluster
9 | #LTS.JOBCLIENT.REGISTRY-ADDRESS=zookeeper://127.0.0.1:2181
10 | #LTS.JOBCLIENT.NODE-GROUP=test_jobClient
11 | #LTS.JOBCLIENT.USE-RETRY-CLIENT=true
12 | #LTS.JOBCLIENT.CONFIGS.job.fail.store=mapdb
13 |
--------------------------------------------------------------------------------
/lts-example-jobclient/lts-example-jobclient-spring-annotation/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | lts-example-jobclient
7 | com.github.ltsopensource
8 | 1.7.2-SNAPSHOT
9 |
10 | 4.0.0
11 |
12 | lts-example-jobclient-spring-annotation
13 |
14 |
15 |
16 | org.springframework
17 | spring-core
18 | ${springframework.version}
19 |
20 |
21 | org.springframework
22 | spring-beans
23 | ${springframework.version}
24 |
25 |
26 | org.springframework
27 | spring-context
28 | ${springframework.version}
29 |
30 |
31 | org.springframework
32 | spring-context-support
33 | ${springframework.version}
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/lts-example-jobclient/lts-example-jobclient-spring-annotation/src/main/java/com/github/ltsopensource/example/JobClientConfig.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example;
2 |
3 | import com.github.ltsopensource.jobclient.JobClient;
4 | import com.github.ltsopensource.spring.JobClientFactoryBean;
5 | import org.springframework.context.annotation.Bean;
6 | import org.springframework.context.annotation.Configuration;
7 |
8 | /**
9 | * @author Robert HG (254963746@qq.com) on 4/22/16.
10 | */
11 | @Configuration
12 | public class JobClientConfig {
13 |
14 | @Bean(name = "jobClient")
15 | public JobClient getJobClient() throws Exception {
16 | JobClientFactoryBean factoryBean = new JobClientFactoryBean();
17 | factoryBean.setLocations("lts.properties");
18 | factoryBean.afterPropertiesSet();
19 | factoryBean.start();
20 | return factoryBean.getObject();
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/lts-example-jobclient/lts-example-jobclient-spring-annotation/src/main/java/com/github/ltsopensource/example/JobCompletedHandlerImpl.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example;
2 |
3 | import com.github.ltsopensource.core.commons.utils.CollectionUtils;
4 | import com.github.ltsopensource.core.domain.JobResult;
5 | import com.github.ltsopensource.jobclient.support.JobCompletedHandler;
6 |
7 | import java.text.SimpleDateFormat;
8 | import java.util.Date;
9 | import java.util.List;
10 |
11 | /**
12 | * @author Robert HG (254963746@qq.com) on 4/17/16.
13 | */
14 | public class JobCompletedHandlerImpl implements JobCompletedHandler {
15 |
16 | @Override
17 | public void onComplete(List jobResults) {
18 | // 任务执行反馈结果处理
19 | if (CollectionUtils.isNotEmpty(jobResults)) {
20 | for (JobResult jobResult : jobResults) {
21 | System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + " 任务执行完成:" + jobResult);
22 | }
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/lts-example-jobclient/lts-example-jobclient-spring-annotation/src/main/java/com/github/ltsopensource/example/Main.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example;
2 |
3 | import com.github.ltsopensource.core.domain.Job;
4 | import com.github.ltsopensource.jobclient.JobClient;
5 | import com.github.ltsopensource.jobclient.domain.Response;
6 | import org.springframework.context.ApplicationContext;
7 | import org.springframework.context.support.ClassPathXmlApplicationContext;
8 |
9 | /**
10 | * @author Robert HG (254963746@qq.com) on 4/22/16.
11 | */
12 | public class Main {
13 |
14 | public static void main(String[] args) {
15 | ApplicationContext context = new ClassPathXmlApplicationContext("/lts-jobclient.xml");
16 |
17 | JobClient jobClient = (JobClient) context.getBean("jobClient");
18 |
19 | Job job = new Job();
20 | job.setTaskId("t_realtime_5556666");
21 | job.setParam("shopId", "1122222221");
22 | job.setTaskTrackerNodeGroup("test_trade_TaskTracker");
23 | job.setNeedFeedback(true);
24 | job.setReplaceOnExist(true); // 当任务队列中存在这个任务的时候,是否替换更新
25 | Response response = jobClient.submitJob(job);
26 | System.out.println(response);
27 | }
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/lts-example-jobclient/lts-example-jobclient-spring-annotation/src/main/resources/log4j.properties:
--------------------------------------------------------------------------------
1 |
2 | log4j.rootLogger=INFO,stdout
3 |
4 | log4j.appender.stdout.Threshold=INFO
5 | log4j.appender.stdout=org.apache.log4j.ConsoleAppender
6 | log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
7 | log4j.appender.stdout.layout.ConversionPattern=%d [%t] (%F:%L) %-5p %c %x - %m%n
--------------------------------------------------------------------------------
/lts-example-jobclient/lts-example-jobclient-spring-annotation/src/main/resources/lts-jobclient.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/lts-example-jobclient/lts-example-jobclient-spring-annotation/src/main/resources/lts.properties:
--------------------------------------------------------------------------------
1 | lts.jobclient.cluster-name=test_cluster
2 | lts.jobclient.registry-address=zookeeper://127.0.0.1:2181
3 | lts.jobclient.node-group=test_jobClient
4 | lts.jobclient.use-retry-client=true
5 | lts.jobclient.configs.job.fail.store=mapdb
6 |
7 |
8 | #LTS.JOBCLIENT.CLUSTER-NAME=test_cluster
9 | #LTS.JOBCLIENT.REGISTRY-ADDRESS=zookeeper://127.0.0.1:2181
10 | #LTS.JOBCLIENT.NODE-GROUP=test_jobClient
11 | #LTS.JOBCLIENT.USE-RETRY-CLIENT=true
12 | #LTS.JOBCLIENT.CONFIGS.job.fail.store=mapdb
13 |
--------------------------------------------------------------------------------
/lts-example-jobclient/lts-example-jobclient-spring-xml/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | lts-example-jobclient
7 | com.github.ltsopensource
8 | 1.7.2-SNAPSHOT
9 |
10 | 4.0.0
11 |
12 | lts-example-jobclient-spring-xml
13 |
14 |
15 |
16 | org.springframework
17 | spring-core
18 | ${springframework.version}
19 |
20 |
21 | org.springframework
22 | spring-beans
23 | ${springframework.version}
24 |
25 |
26 | org.springframework
27 | spring-context
28 | ${springframework.version}
29 |
30 |
31 | org.springframework
32 | spring-context-support
33 | ${springframework.version}
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/lts-example-jobclient/lts-example-jobclient-spring-xml/src/main/java/com/github/ltsopensource/example/spring/JobCompletedHandlerImpl.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example.spring;
2 |
3 | import com.github.ltsopensource.core.commons.utils.CollectionUtils;
4 | import com.github.ltsopensource.core.domain.JobResult;
5 | import com.github.ltsopensource.jobclient.support.JobCompletedHandler;
6 |
7 | import java.text.SimpleDateFormat;
8 | import java.util.Date;
9 | import java.util.List;
10 |
11 | /**
12 | * @author Robert HG (254963746@qq.com) on 4/17/16.
13 | */
14 | public class JobCompletedHandlerImpl implements JobCompletedHandler {
15 |
16 | @Override
17 | public void onComplete(List jobResults) {
18 | // 任务执行反馈结果处理
19 | if (CollectionUtils.isNotEmpty(jobResults)) {
20 | for (JobResult jobResult : jobResults) {
21 | System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + " 任务执行完成:" + jobResult);
22 | }
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/lts-example-jobclient/lts-example-jobclient-spring-xml/src/main/java/com/github/ltsopensource/example/spring/Main.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example.spring;
2 |
3 | import com.github.ltsopensource.core.domain.Job;
4 | import com.github.ltsopensource.jobclient.JobClient;
5 | import com.github.ltsopensource.jobclient.domain.Response;
6 | import org.springframework.context.ApplicationContext;
7 | import org.springframework.context.support.ClassPathXmlApplicationContext;
8 |
9 | /**
10 | * @author Robert HG (254963746@qq.com) on 4/18/16.
11 | */
12 | public class Main {
13 |
14 | public static void main(String[] args) {
15 | ApplicationContext context = new ClassPathXmlApplicationContext("/lts-jobclient.xml");
16 |
17 | JobClient jobClient = (JobClient) context.getBean("jobClient");
18 |
19 | Job job = new Job();
20 | job.setTaskId("t_realtime_5556666");
21 | job.setParam("shopId", "1122222221");
22 | job.setTaskTrackerNodeGroup("test_trade_TaskTracker");
23 | job.setNeedFeedback(true);
24 | job.setReplaceOnExist(true); // 当任务队列中存在这个任务的时候,是否替换更新
25 | Response response = jobClient.submitJob(job);
26 | System.out.println(response);
27 | }
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/lts-example-jobclient/lts-example-jobclient-spring-xml/src/main/resources/log4j.properties:
--------------------------------------------------------------------------------
1 |
2 | log4j.rootLogger=INFO,stdout
3 |
4 | log4j.appender.stdout.Threshold=INFO
5 | log4j.appender.stdout=org.apache.log4j.ConsoleAppender
6 | log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
7 | log4j.appender.stdout.layout.ConversionPattern=%d [%t] (%F:%L) %-5p %c %x - %m%n
--------------------------------------------------------------------------------
/lts-example-jobclient/lts-example-jobclient-spring-xml/src/main/resources/lts-jobclient.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/lts-example-jobclient/lts-example-jobclient-spring-xml/src/main/resources/lts.properties:
--------------------------------------------------------------------------------
1 | lts.jobclient.cluster-name=test_cluster
2 | lts.jobclient.registry-address=zookeeper://127.0.0.1:2181
3 | lts.jobclient.node-group=test_jobClient
4 | lts.jobclient.use-retry-client=true
5 | lts.jobclient.configs.job.fail.store=mapdb
6 |
7 |
8 | #LTS.JOBCLIENT.CLUSTER-NAME=test_cluster
9 | #LTS.JOBCLIENT.REGISTRY-ADDRESS=zookeeper://127.0.0.1:2181
10 | #LTS.JOBCLIENT.NODE-GROUP=test_jobClient
11 | #LTS.JOBCLIENT.USE-RETRY-CLIENT=true
12 | #LTS.JOBCLIENT.CONFIGS.job.fail.store=mapdb
13 |
--------------------------------------------------------------------------------
/lts-example-jobclient/lts-example-jobclient-springboot/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | lts-example-jobclient
7 | com.github.ltsopensource
8 | 1.7.2-SNAPSHOT
9 |
10 | 4.0.0
11 | lts-example-jobclient-springboot
12 |
13 |
14 |
15 | org.springframework.boot
16 | spring-boot
17 |
18 |
19 | org.springframework.boot
20 | spring-boot-autoconfigure
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/lts-example-jobclient/lts-example-jobclient-springboot/src/main/java/com/github/ltsopensource/example/springboot/Application.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example.springboot;
2 |
3 | import com.github.ltsopensource.spring.boot.annotation.EnableJobClient;
4 | import org.springframework.boot.SpringApplication;
5 | import org.springframework.boot.autoconfigure.SpringBootApplication;
6 | import org.springframework.context.annotation.ComponentScan;
7 |
8 | /**
9 | * @author Robert HG (254963746@qq.com) on 4/9/16.
10 | */
11 | @SpringBootApplication
12 | @EnableJobClient
13 | @ComponentScan("com.github.ltsopensource.example")
14 | public class Application {
15 |
16 | public static void main(String[] args) {
17 | SpringApplication.run(Application.class, args);
18 | }
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/lts-example-jobclient/lts-example-jobclient-springboot/src/main/java/com/github/ltsopensource/example/springboot/JobClientReferenceBean.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example.springboot;
2 |
3 | import com.github.ltsopensource.core.domain.Job;
4 | import com.github.ltsopensource.jobclient.JobClient;
5 | import com.github.ltsopensource.jobclient.domain.Response;
6 | import org.springframework.beans.factory.InitializingBean;
7 | import org.springframework.beans.factory.annotation.Autowired;
8 | import org.springframework.stereotype.Component;
9 |
10 | /**
11 | * @author Robert HG (254963746@qq.com) on 4/9/16.
12 | */
13 | @Component
14 | public class JobClientReferenceBean implements InitializingBean {
15 |
16 | /**
17 | * 自己的业务类,就可以这样引用了
18 | */
19 | @Autowired
20 | private JobClient jobClient;
21 |
22 | @Override
23 | public void afterPropertiesSet() throws Exception {
24 |
25 | // 这里模拟提交任务
26 |
27 | Job job = new Job();
28 | job.setTaskId("t_555");
29 | job.setParam("shopId", "1122222221");
30 | job.setTaskTrackerNodeGroup("test_trade_TaskTracker");
31 | job.setNeedFeedback(true);
32 | job.setReplaceOnExist(true); // 当任务队列中存在这个任务的时候,是否替换更新
33 | // job.setCronExpression("0 0/1 * * * ?");
34 | // job.setTriggerTime(DateUtils.addDay(new Date(), 1));
35 | Response response = jobClient.submitJob(job);
36 | System.out.println(response);
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/lts-example-jobclient/lts-example-jobclient-springboot/src/main/java/com/github/ltsopensource/example/springboot/JobCompletedHandlerImpl.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example.springboot;
2 |
3 | import com.github.ltsopensource.core.commons.utils.CollectionUtils;
4 | import com.github.ltsopensource.core.domain.JobResult;
5 | import com.github.ltsopensource.jobclient.support.JobCompletedHandler;
6 | import com.github.ltsopensource.spring.boot.annotation.JobCompletedHandler4JobClient;
7 |
8 | import java.text.SimpleDateFormat;
9 | import java.util.Date;
10 | import java.util.List;
11 |
12 | /**
13 | * @author Robert HG (254963746@qq.com) on 4/9/16.
14 | */
15 | // 增加这个注解, 即可作为任务执行结果反馈回调接口(也可以不使用)
16 | @JobCompletedHandler4JobClient
17 | public class JobCompletedHandlerImpl implements JobCompletedHandler {
18 | @Override
19 | public void onComplete(List jobResults) {
20 | // 任务执行反馈结果处理
21 | if (CollectionUtils.isNotEmpty(jobResults)) {
22 | for (JobResult jobResult : jobResults) {
23 | System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + " 任务执行完成:" + jobResult);
24 | }
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/lts-example-jobclient/lts-example-jobclient-springboot/src/main/java/com/github/ltsopensource/example/springboot/MasterNodeChangeListener.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example.springboot;
2 |
3 | import com.github.ltsopensource.core.cluster.Node;
4 | import com.github.ltsopensource.core.commons.utils.StringUtils;
5 | import com.github.ltsopensource.core.listener.MasterChangeListener;
6 | import com.github.ltsopensource.core.logger.Logger;
7 | import com.github.ltsopensource.core.logger.LoggerFactory;
8 | import com.github.ltsopensource.spring.boot.annotation.MasterNodeListener;
9 |
10 | /**
11 | * @author Robert HG (254963746@qq.com) on 4/9/16.
12 | */
13 | @MasterNodeListener
14 | public class MasterNodeChangeListener implements MasterChangeListener {
15 |
16 | private static final Logger LOGGER = LoggerFactory.getLogger(MasterNodeChangeListener.class);
17 |
18 | /**
19 | * @param master master节点
20 | * @param isMaster 表示当前节点是不是master节点
21 | */
22 | @Override
23 | public void change(Node master, boolean isMaster) {
24 | // 一个节点组master节点变化后的处理 , 譬如我多个JobClient, 但是有些事情只想只有一个节点能做。
25 | if (isMaster) {
26 | LOGGER.info("我变成了节点组中的master节点了, 恭喜, 我要放大招了");
27 | } else {
28 | LOGGER.info(StringUtils.format("master节点变成了{},不是我,我不能放大招,要猥琐", master));
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/lts-example-jobclient/lts-example-jobclient-springboot/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | lts.jobclient.cluster-name=test_cluster
2 | lts.jobclient.registry-address=zookeeper://127.0.0.1:2181
3 | lts.jobclient.node-group=test_jobClient
4 | lts.jobclient.use-retry-client=true
5 | lts.jobclient.configs.job.fail.store=mapdb
--------------------------------------------------------------------------------
/lts-example-jobclient/lts-example-jobclient-springboot/src/main/resources/log4j.properties:
--------------------------------------------------------------------------------
1 |
2 | log4j.rootLogger=INFO,stdout
3 |
4 | log4j.appender.stdout.Threshold=INFO
5 | log4j.appender.stdout=org.apache.log4j.ConsoleAppender
6 | log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
7 | log4j.appender.stdout.layout.ConversionPattern=%d [%t] (%F:%L) %-5p %c %x - %m%n
--------------------------------------------------------------------------------
/lts-example-jobclient/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | lts-examples
7 | com.github.ltsopensource
8 | 1.7.2-SNAPSHOT
9 |
10 | 4.0.0
11 | pom
12 |
13 | lts-example-jobclient-springboot
14 | lts-example-jobclient-spring-xml
15 | lts-example-jobclient-java
16 | lts-example-jobclient-spring-annotation
17 |
18 | lts-example-jobclient
19 |
20 |
21 |
22 | com.github.ltsopensource
23 | lts
24 |
25 |
26 | org.javassist
27 | javassist
28 |
29 |
30 | log4j
31 | log4j
32 |
33 |
34 | com.github.sgroschupf
35 | zkclient
36 |
37 |
38 | io.netty
39 | netty-all
40 |
41 |
42 | com.alibaba
43 | fastjson
44 |
45 |
46 | org.mapdb
47 | mapdb
48 |
49 |
50 |
51 |
52 |
--------------------------------------------------------------------------------
/lts-example-jobtracker/lts-example-jobtracker-java/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | lts-example-jobtracker
7 | com.github.ltsopensource
8 | 1.7.2-SNAPSHOT
9 |
10 | 4.0.0
11 |
12 | lts-example-jobtracker-java
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/lts-example-jobtracker/lts-example-jobtracker-java/src/main/java/com/github/ltsopensource/example/java/Main.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example.java;
2 |
3 | import com.github.ltsopensource.jobtracker.JobTracker;
4 | import com.github.ltsopensource.jobtracker.JobTrackerBuilder;
5 |
6 | /**
7 | * @author Robert HG (254963746@qq.com) on 4/17/16.
8 | */
9 | public class Main {
10 |
11 | public static void main(String[] args) {
12 | // final JobTracker jobTracker = new JobTracker();
13 | // // 节点信息配置
14 | // jobTracker.setRegistryAddress("zookeeper://127.0.0.1:2181");
15 | //// jobTracker.setRegistryAddress("redis://127.0.0.1:6379");
16 | // jobTracker.setListenPort(35001); // 默认 35001
17 | // jobTracker.setClusterName("test_cluster");
18 | //
19 | //// // 设置业务日志记录 mysql
20 | //// jobTracker.addConfig("job.logger", "mysql");
21 | //// // 任务队列用mysql
22 | //// jobTracker.addConfig("job.queue", "mysql");
23 | // // mysql 配置
24 | // jobTracker.addConfig("jdbc.url", "jdbc:mysql://127.0.0.1:3306/lts");
25 | // jobTracker.addConfig("jdbc.username", "root");
26 | // jobTracker.addConfig("jdbc.password", "root");
27 |
28 | final JobTracker jobTracker = new JobTrackerBuilder()
29 | .setPropertiesConfigure("lts.properties")
30 | .build();
31 |
32 | // 启动节点
33 | jobTracker.start();
34 |
35 | Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
36 | @Override
37 | public void run() {
38 | jobTracker.stop();
39 | }
40 | }));
41 | }
42 |
43 | }
44 |
--------------------------------------------------------------------------------
/lts-example-jobtracker/lts-example-jobtracker-java/src/main/resources/log4j.properties:
--------------------------------------------------------------------------------
1 |
2 | log4j.rootLogger=INFO,stdout
3 |
4 | log4j.appender.stdout.Threshold=INFO
5 | log4j.appender.stdout=org.apache.log4j.ConsoleAppender
6 | log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
7 | log4j.appender.stdout.layout.ConversionPattern=%d [%t] (%F:%L) %-5p %c %x - %m%n
--------------------------------------------------------------------------------
/lts-example-jobtracker/lts-example-jobtracker-java/src/main/resources/lts.properties:
--------------------------------------------------------------------------------
1 | lts.jobtracker.cluster-name=test_cluster
2 | lts.jobtracker.listen-port=35001
3 | lts.jobtracker.registry-address=zookeeper://127.0.0.1:2181
4 | lts.jobtracker.configs.job.logger=mysql
5 | lts.jobtracker.configs.job.queue=mysql
6 | lts.jobtracker.configs.jdbc.url=jdbc:mysql://127.0.0.1:3306/lts
7 | lts.jobtracker.configs.jdbc.username=root
8 | lts.jobtracker.configs.jdbc.password=root
9 |
--------------------------------------------------------------------------------
/lts-example-jobtracker/lts-example-jobtracker-spring-annotaion/lts-example-jobtracker-spring-annotaion.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/lts-example-jobtracker/lts-example-jobtracker-spring-annotaion/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | lts-example-jobtracker
7 | com.github.ltsopensource
8 | 1.7.2-SNAPSHOT
9 |
10 | 4.0.0
11 |
12 | lts-example-jobtracker-spring-annotaion
13 |
14 |
15 |
16 | org.springframework
17 | spring-core
18 | ${springframework.version}
19 |
20 |
21 | org.springframework
22 | spring-beans
23 | ${springframework.version}
24 |
25 |
26 | org.springframework
27 | spring-context
28 | ${springframework.version}
29 |
30 |
31 | org.springframework
32 | spring-context-support
33 | ${springframework.version}
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/lts-example-jobtracker/lts-example-jobtracker-spring-annotaion/src/main/java/com/github/ltsopensource/example/JobTrackerConfig.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example;
2 |
3 | import com.github.ltsopensource.jobtracker.JobTracker;
4 | import com.github.ltsopensource.spring.JobTrackerFactoryBean;
5 | import org.springframework.context.annotation.Bean;
6 | import org.springframework.context.annotation.Configuration;
7 |
8 | /**
9 | * @author Robert HG (254963746@qq.com) on 4/22/16.
10 | */
11 | @Configuration
12 | public class JobTrackerConfig {
13 |
14 | @Bean(name = "jobTracker")
15 | public JobTracker getJobTracker() throws Exception {
16 | JobTrackerFactoryBean factoryBean = new JobTrackerFactoryBean();
17 | factoryBean.setLocations("lts.properties");
18 | factoryBean.afterPropertiesSet();
19 | factoryBean.start();
20 | return factoryBean.getObject();
21 | }
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/lts-example-jobtracker/lts-example-jobtracker-spring-annotaion/src/main/java/com/github/ltsopensource/example/Main.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example;
2 |
3 | import org.springframework.context.ApplicationContext;
4 | import org.springframework.context.support.ClassPathXmlApplicationContext;
5 |
6 | /**
7 | * @author Robert HG (254963746@qq.com) on 4/22/16.
8 | */
9 | public class Main {
10 |
11 | public static void main(String[] args) {
12 | ApplicationContext context = new ClassPathXmlApplicationContext("/lts-jobtracker.xml");
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/lts-example-jobtracker/lts-example-jobtracker-spring-annotaion/src/main/resources/log4j.properties:
--------------------------------------------------------------------------------
1 |
2 | log4j.rootLogger=INFO,stdout
3 |
4 | log4j.appender.stdout.Threshold=INFO
5 | log4j.appender.stdout=org.apache.log4j.ConsoleAppender
6 | log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
7 | log4j.appender.stdout.layout.ConversionPattern=%d [%t] (%F:%L) %-5p %c %x - %m%n
--------------------------------------------------------------------------------
/lts-example-jobtracker/lts-example-jobtracker-spring-annotaion/src/main/resources/lts-jobtracker.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/lts-example-jobtracker/lts-example-jobtracker-spring-annotaion/src/main/resources/lts.properties:
--------------------------------------------------------------------------------
1 | lts.jobtracker.cluster-name=test_cluster
2 | lts.jobtracker.listen-port=35001
3 | lts.jobtracker.registry-address=zookeeper://127.0.0.1:2181
4 | lts.jobtracker.configs.job.logger=mysql
5 | lts.jobtracker.configs.job.queue=mysql
6 | lts.jobtracker.configs.jdbc.url=jdbc:mysql://127.0.0.1:3306/lts
7 | lts.jobtracker.configs.jdbc.username=root
8 | lts.jobtracker.configs.jdbc.password=root
9 |
--------------------------------------------------------------------------------
/lts-example-jobtracker/lts-example-jobtracker-spring-xml/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | lts-example-jobtracker
7 | com.github.ltsopensource
8 | 1.7.2-SNAPSHOT
9 |
10 | 4.0.0
11 |
12 | lts-example-jobtracker-spring-xml
13 |
14 |
15 | org.springframework
16 | spring-core
17 | ${springframework.version}
18 |
19 |
20 | org.springframework
21 | spring-beans
22 | ${springframework.version}
23 |
24 |
25 | org.springframework
26 | spring-context
27 | ${springframework.version}
28 |
29 |
30 | org.springframework
31 | spring-context-support
32 | ${springframework.version}
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/lts-example-jobtracker/lts-example-jobtracker-spring-xml/src/main/java/com/github/ltsopensource/example/spring/Main.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example.spring;
2 |
3 | import org.springframework.context.ApplicationContext;
4 | import org.springframework.context.support.ClassPathXmlApplicationContext;
5 |
6 | /**
7 | * @author Robert HG (254963746@qq.com) on 4/18/16.
8 | */
9 | public class Main {
10 |
11 | public static void main(String[] args) {
12 | ApplicationContext context = new ClassPathXmlApplicationContext("/lts-jobtracker.xml");
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/lts-example-jobtracker/lts-example-jobtracker-spring-xml/src/main/resources/log4j.properties:
--------------------------------------------------------------------------------
1 |
2 | log4j.rootLogger=INFO,stdout
3 |
4 | log4j.appender.stdout.Threshold=INFO
5 | log4j.appender.stdout=org.apache.log4j.ConsoleAppender
6 | log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
7 | log4j.appender.stdout.layout.ConversionPattern=%d [%t] (%F:%L) %-5p %c %x - %m%n
--------------------------------------------------------------------------------
/lts-example-jobtracker/lts-example-jobtracker-spring-xml/src/main/resources/lts-jobtracker.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | mysql
18 | mysql
19 | jdbc:mysql://127.0.0.1:3306/lts
20 | root
21 | root
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/lts-example-jobtracker/lts-example-jobtracker-springboot/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | lts-example-jobtracker
7 | com.github.ltsopensource
8 | 1.7.2-SNAPSHOT
9 |
10 | 4.0.0
11 |
12 | lts-example-jobtracker-springboot
13 |
14 |
15 |
16 | org.springframework.boot
17 | spring-boot
18 |
19 |
20 | org.springframework.boot
21 | spring-boot-autoconfigure
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/lts-example-jobtracker/lts-example-jobtracker-springboot/src/main/java/com/github/ltsopensource/example/springboot/Application.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example.springboot;
2 |
3 | import com.github.ltsopensource.spring.boot.annotation.EnableJobTracker;
4 | import org.springframework.boot.SpringApplication;
5 | import org.springframework.boot.autoconfigure.SpringBootApplication;
6 | import org.springframework.context.annotation.ComponentScan;
7 |
8 | /**
9 | * @author Robert HG (254963746@qq.com) on 4/9/16.
10 | */
11 | @SpringBootApplication
12 | @EnableJobTracker
13 | @ComponentScan("com.github.ltsopensource.example")
14 | public class Application {
15 |
16 | public static void main(String[] args) {
17 | SpringApplication.run(Application.class, args);
18 | }
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/lts-example-jobtracker/lts-example-jobtracker-springboot/src/main/java/com/github/ltsopensource/example/springboot/MasterNodeChangeListener.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example.springboot;
2 |
3 | import com.github.ltsopensource.core.cluster.Node;
4 | import com.github.ltsopensource.core.commons.utils.StringUtils;
5 | import com.github.ltsopensource.core.listener.MasterChangeListener;
6 | import com.github.ltsopensource.core.logger.Logger;
7 | import com.github.ltsopensource.core.logger.LoggerFactory;
8 | import com.github.ltsopensource.spring.boot.annotation.MasterNodeListener;
9 |
10 | /**
11 | * @author Robert HG (254963746@qq.com) on 4/9/16.
12 | */
13 | @MasterNodeListener
14 | public class MasterNodeChangeListener implements MasterChangeListener {
15 |
16 | private static final Logger LOGGER = LoggerFactory.getLogger(MasterNodeChangeListener.class);
17 |
18 | /**
19 | * @param master master节点
20 | * @param isMaster 表示当前节点是不是master节点
21 | */
22 | @Override
23 | public void change(Node master, boolean isMaster) {
24 | // 一个节点组master节点变化后的处理 , 譬如我多个JobClient, 但是有些事情只想只有一个节点能做。
25 | if (isMaster) {
26 | LOGGER.info("我变成了节点组中的master节点了, 恭喜, 我要放大招了");
27 | } else {
28 | LOGGER.info(StringUtils.format("master节点变成了{},不是我,我不能放大招,要猥琐", master));
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/lts-example-jobtracker/lts-example-jobtracker-springboot/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | lts.jobtracker.cluster-name=test_cluster
2 | lts.jobtracker.listen-port=35001
3 | lts.jobtracker.registry-address=zookeeper://127.0.0.1:2181
4 | lts.jobtracker.configs.job.logger=mysql
5 | lts.jobtracker.configs.job.queue=mysql
6 | lts.jobtracker.configs.jdbc.url=jdbc:mysql://127.0.0.1:3306/lts
7 | lts.jobtracker.configs.jdbc.username=root
8 | lts.jobtracker.configs.jdbc.password=root
9 |
--------------------------------------------------------------------------------
/lts-example-jobtracker/lts-example-jobtracker-springboot/src/main/resources/log4j.properties:
--------------------------------------------------------------------------------
1 |
2 | log4j.rootLogger=INFO,stdout
3 |
4 | log4j.appender.stdout.Threshold=INFO
5 | log4j.appender.stdout=org.apache.log4j.ConsoleAppender
6 | log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
7 | log4j.appender.stdout.layout.ConversionPattern=%d [%t] (%F:%L) %-5p %c %x - %m%n
--------------------------------------------------------------------------------
/lts-example-jobtracker/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | lts-examples
7 | com.github.ltsopensource
8 | 1.7.2-SNAPSHOT
9 |
10 | 4.0.0
11 | lts-example-jobtracker
12 | pom
13 |
14 | lts-example-jobtracker-springboot
15 | lts-example-jobtracker-java
16 | lts-example-jobtracker-spring-xml
17 | lts-example-jobtracker-spring-annotaion
18 |
19 |
20 |
21 |
22 | com.github.ltsopensource
23 | lts
24 |
25 |
26 | org.javassist
27 | javassist
28 |
29 |
30 | log4j
31 | log4j
32 |
33 |
34 | com.github.sgroschupf
35 | zkclient
36 |
37 |
38 | io.netty
39 | netty-all
40 |
41 |
42 | mysql
43 | mysql-connector-java
44 |
45 |
46 | com.alibaba
47 | druid
48 |
49 |
50 | com.alibaba
51 | fastjson
52 |
53 |
54 |
55 |
56 |
--------------------------------------------------------------------------------
/lts-example-monitor/lts-example-monitor-springboot/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | lts-example-monitor
7 | com.github.ltsopensource
8 | 1.7.2-SNAPSHOT
9 |
10 | 4.0.0
11 |
12 | lts-example-monitor-springboot
13 |
14 |
15 |
16 |
17 | org.springframework.boot
18 | spring-boot
19 |
20 |
21 | org.springframework.boot
22 | spring-boot-autoconfigure
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/lts-example-monitor/lts-example-monitor-springboot/src/main/java/com/github/ltsopensource/example/springboot/Application.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example.springboot;
2 |
3 | import com.github.ltsopensource.spring.boot.annotation.EnableMonitor;
4 | import org.springframework.boot.SpringApplication;
5 | import org.springframework.boot.autoconfigure.SpringBootApplication;
6 | import org.springframework.context.annotation.ComponentScan;
7 |
8 | /**
9 | * @author Robert HG (254963746@qq.com) on 4/9/16.
10 | */
11 | @SpringBootApplication
12 | @EnableMonitor
13 | @ComponentScan("com.github.ltsopensource.example")
14 | public class Application {
15 |
16 | public static void main(String[] args) {
17 | SpringApplication.run(Application.class, args);
18 | }
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/lts-example-monitor/lts-example-monitor-springboot/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | lts.monitor.cluster-name=test_cluster
2 | lts.monitor.registry-address=zookeeper://127.0.0.1:2181
3 | lts.monitor.configs.job.logger=mysql
4 | lts.monitor.configs.job.queue=mysql
5 | lts.monitor.configs.jdbc.url=jdbc:mysql://127.0.0.1:3306/lts
6 | lts.monitor.configs.jdbc.username=root
7 | lts.monitor.configs.jdbc.password=root
--------------------------------------------------------------------------------
/lts-example-monitor/lts-example-monitor-springboot/src/main/resources/log4j.properties:
--------------------------------------------------------------------------------
1 |
2 | log4j.rootLogger=INFO,stdout
3 |
4 | log4j.appender.stdout.Threshold=INFO
5 | log4j.appender.stdout=org.apache.log4j.ConsoleAppender
6 | log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
7 | log4j.appender.stdout.layout.ConversionPattern=%d [%t] (%F:%L) %-5p %c %x - %m%n
--------------------------------------------------------------------------------
/lts-example-monitor/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | lts-examples
7 | com.github.ltsopensource
8 | 1.7.2-SNAPSHOT
9 |
10 | 4.0.0
11 | pom
12 |
13 | lts-example-monitor-springboot
14 |
15 | lts-example-monitor
16 |
17 |
18 |
19 | com.github.ltsopensource
20 | lts
21 |
22 |
23 | log4j
24 | log4j
25 |
26 |
27 | com.github.sgroschupf
28 | zkclient
29 |
30 |
31 | mysql
32 | mysql-connector-java
33 |
34 |
35 | com.alibaba
36 | druid
37 |
38 |
39 | com.alibaba
40 | fastjson
41 |
42 |
43 | org.javassist
44 | javassist
45 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/lts-example-quartz/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | lts-examples
7 | com.github.ltsopensource
8 | 1.7.2-SNAPSHOT
9 |
10 | 4.0.0
11 |
12 | lts-example-quartz
13 |
14 |
15 |
16 | com.github.ltsopensource
17 | lts
18 |
19 |
20 | com.github.sgroschupf
21 | zkclient
22 |
23 |
24 | io.netty
25 | netty-all
26 |
27 |
28 | com.alibaba
29 | fastjson
30 |
31 |
32 | org.mapdb
33 | mapdb
34 |
35 |
36 | org.javassist
37 | javassist
38 |
39 |
40 | org.springframework
41 | spring-core
42 |
43 |
44 | org.springframework
45 | spring-beans
46 |
47 |
48 | org.springframework
49 | spring-context
50 |
51 |
52 | org.springframework
53 | spring-context-support
54 |
55 |
56 | org.springframework
57 | spring-tx
58 |
59 |
60 |
61 | org.quartz-scheduler
62 | quartz
63 | 2.2.2
64 |
65 |
66 | c3p0
67 | c3p0
68 |
69 |
70 | org.slf4j
71 | slf4j-api
72 |
73 |
74 |
75 |
76 | org.slf4j
77 | slf4j-api
78 | ${slf4j.version}
79 |
80 |
81 | org.slf4j
82 | slf4j-log4j12
83 | ${slf4j.version}
84 |
85 |
86 | org.fusesource.leveldbjni
87 | leveldbjni-all
88 | ${leveldbjni.version}
89 |
90 |
91 |
92 |
93 |
--------------------------------------------------------------------------------
/lts-example-quartz/src/main/java/com/github/ltsopensource/example/Main.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example;
2 |
3 | import org.springframework.context.ApplicationContext;
4 | import org.springframework.context.support.ClassPathXmlApplicationContext;
5 |
6 | /**
7 | * @author Robert HG (254963746@qq.com) on 3/16/16.
8 | */
9 | public class Main {
10 |
11 | public static void main(String[] args) {
12 |
13 | ApplicationContext context = new ClassPathXmlApplicationContext("/lts-quartz.xml");
14 | }
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/lts-example-quartz/src/main/java/com/github/ltsopensource/example/QuartzTest.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example;
2 |
3 | import com.github.ltsopensource.core.commons.utils.DateUtils;
4 |
5 | import java.util.Date;
6 |
7 | /**
8 | * @author Robert HG (254963746@qq.com) on 3/16/16.
9 | */
10 | public class QuartzTest {
11 |
12 | public void autoRun() throws InterruptedException {
13 | System.out.println(DateUtils.formatYMD_HMS(new Date()) + " 我执行了...");
14 | }
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/lts-example-quartz/src/main/java/com/github/ltsopensource/example/QuartzTestJob.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example;
2 |
3 | import com.github.ltsopensource.core.commons.utils.DateUtils;
4 | import org.quartz.JobExecutionContext;
5 | import org.quartz.JobExecutionException;
6 | import org.springframework.scheduling.quartz.QuartzJobBean;
7 |
8 | import java.util.Date;
9 | import java.util.Map;
10 |
11 | /**
12 | * @author Robert HG (254963746@qq.com) on 3/16/16.
13 | */
14 | public class QuartzTestJob extends QuartzJobBean {
15 |
16 | @Override
17 | protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
18 |
19 | for (Map.Entry entry : context.getMergedJobDataMap().entrySet()) {
20 | System.out.println(entry.getKey() + ":" + entry.getValue());
21 | }
22 | System.out.println(DateUtils.formatYMD_HMS(new Date()) + " 我开始执行了...");
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/lts-example-quartz/src/main/resources/log4j.properties:
--------------------------------------------------------------------------------
1 |
2 | log4j.rootLogger=INFO,stdout
3 |
4 | log4j.appender.stdout.Threshold=INFO
5 | log4j.appender.stdout=org.apache.log4j.ConsoleAppender
6 | log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
7 | log4j.appender.stdout.layout.ConversionPattern=%d [%t] (%F:%L) %-5p %c %x - %m%n
--------------------------------------------------------------------------------
/lts-example-quartz/src/main/resources/lts-quartz.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
--------------------------------------------------------------------------------
/lts-example-quartz/src/main/resources/lts.properties:
--------------------------------------------------------------------------------
1 |
2 | lts.jobclient.cluster-name=test_cluster
3 | lts.jobclient.registry-address=zookeeper://127.0.0.1:2181
4 | lts.jobclient.node-group=test_jobClient
5 | lts.jobclient.use-retry-client=true
6 | lts.jobclient.configs.job.fail.store=mapdb
7 |
8 | lts.tasktracker.cluster-name=test_cluster
9 | lts.tasktracker.registry-address=zookeeper://127.0.0.1:2181
10 | #lts.tasktracker.work-threads=64
11 | lts.tasktracker.node-group=test_trade_TaskTracker
12 | #lts.tasktracker.dispatch-runner.enable=true
13 | #lts.tasktracker.dispatch-runner.shard-value=taskId
14 | lts.tasktracker.configs.job.fail.store=mapdb
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktarcker-springboot/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | lts-example-tasktracker
7 | com.github.ltsopensource
8 | 1.7.2-SNAPSHOT
9 |
10 | 4.0.0
11 |
12 | lts-example-tasktarcker-springboot
13 |
14 |
15 |
16 | org.springframework.boot
17 | spring-boot
18 |
19 |
20 | org.springframework.boot
21 | spring-boot-autoconfigure
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktarcker-springboot/src/main/java/com/github/ltsopensource/example/springboot/Application.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example.springboot;
2 |
3 | import com.github.ltsopensource.spring.boot.annotation.EnableTaskTracker;
4 | import org.springframework.boot.SpringApplication;
5 | import org.springframework.boot.autoconfigure.SpringBootApplication;
6 | import org.springframework.context.annotation.ComponentScan;
7 |
8 | /**
9 | * @author Robert HG (254963746@qq.com) on 4/9/16.
10 | */
11 | @SpringBootApplication
12 | @EnableTaskTracker
13 | @ComponentScan("com.github.ltsopensource.example")
14 | public class Application {
15 |
16 | public static void main(String[] args) {
17 | SpringApplication.run(Application.class, args);
18 | }
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktarcker-springboot/src/main/java/com/github/ltsopensource/example/springboot/JobRunnerImpl.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example.springboot;
2 |
3 | import com.github.ltsopensource.core.domain.Action;
4 | import com.github.ltsopensource.core.logger.Logger;
5 | import com.github.ltsopensource.core.logger.LoggerFactory;
6 | import com.github.ltsopensource.spring.boot.annotation.JobRunner4TaskTracker;
7 | import com.github.ltsopensource.tasktracker.Result;
8 | import com.github.ltsopensource.tasktracker.logger.BizLogger;
9 | import com.github.ltsopensource.tasktracker.runner.JobContext;
10 | import com.github.ltsopensource.tasktracker.runner.JobRunner;
11 |
12 | /**
13 | * @author Robert HG (254963746@qq.com) on 4/9/16.
14 | */
15 | @JobRunner4TaskTracker
16 | public class JobRunnerImpl implements JobRunner {
17 | private static final Logger LOGGER = LoggerFactory.getLogger(JobRunnerImpl.class);
18 |
19 | @Override
20 | public Result run(JobContext jobContext) throws Throwable {
21 | try {
22 | BizLogger bizLogger = jobContext.getBizLogger();
23 |
24 | // TODO 业务逻辑
25 | LOGGER.info("我要执行:" + jobContext);
26 | // 会发送到 LTS (JobTracker上)
27 | bizLogger.info("测试,业务日志啊啊啊啊啊");
28 |
29 | } catch (Exception e) {
30 | LOGGER.info("Run job failed!", e);
31 | return new Result(Action.EXECUTE_FAILED, e.getMessage());
32 | }
33 | return new Result(Action.EXECUTE_SUCCESS, "执行成功了,哈哈");
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktarcker-springboot/src/main/java/com/github/ltsopensource/example/springboot/MasterNodeChangeListener.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example.springboot;
2 |
3 | import com.github.ltsopensource.core.cluster.Node;
4 | import com.github.ltsopensource.core.commons.utils.StringUtils;
5 | import com.github.ltsopensource.core.listener.MasterChangeListener;
6 | import com.github.ltsopensource.core.logger.Logger;
7 | import com.github.ltsopensource.core.logger.LoggerFactory;
8 | import com.github.ltsopensource.spring.boot.annotation.MasterNodeListener;
9 |
10 | /**
11 | * @author Robert HG (254963746@qq.com) on 4/9/16.
12 | */
13 | @MasterNodeListener
14 | public class MasterNodeChangeListener implements MasterChangeListener {
15 |
16 | private static final Logger LOGGER = LoggerFactory.getLogger(MasterNodeChangeListener.class);
17 |
18 | /**
19 | * @param master master节点
20 | * @param isMaster 表示当前节点是不是master节点
21 | */
22 | @Override
23 | public void change(Node master, boolean isMaster) {
24 | // 一个节点组master节点变化后的处理 , 譬如我多个JobClient, 但是有些事情只想只有一个节点能做。
25 | if (isMaster) {
26 | LOGGER.info("我变成了节点组中的master节点了, 恭喜, 我要放大招了");
27 | } else {
28 | LOGGER.info(StringUtils.format("master节点变成了{},不是我,我不能放大招,要猥琐", master));
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktarcker-springboot/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | lts.tasktracker.cluster-name=test_cluster
2 | lts.tasktracker.registry-address=zookeeper://127.0.0.1:2181
3 | #lts.tasktracker.work-threads=64
4 | lts.tasktracker.node-group=test_trade_TaskTracker
5 | #lts.tasktracker.dispatch-runner.enable=true
6 | #lts.tasktracker.dispatch-runner.shard-value=taskId
7 | lts.tasktracker.configs.job.fail.store=mapdb
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktarcker-springboot/src/main/resources/log4j.properties:
--------------------------------------------------------------------------------
1 |
2 | log4j.rootLogger=INFO,stdout
3 |
4 | log4j.appender.stdout.Threshold=INFO
5 | log4j.appender.stdout=org.apache.log4j.ConsoleAppender
6 | log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
7 | log4j.appender.stdout.layout.ConversionPattern=%d [%t] (%F:%L) %-5p %c %x - %m%n
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-java/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | lts-example-tasktracker
7 | com.github.ltsopensource
8 | 1.7.2-SNAPSHOT
9 |
10 | 4.0.0
11 |
12 | lts-example-tasktracker-java
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-java/src/main/java/com/github/ltsopensource/example/java/Main.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example.java;
2 |
3 | import com.github.ltsopensource.tasktracker.TaskTracker;
4 | import com.github.ltsopensource.tasktracker.TaskTrackerBuilder;
5 |
6 | /**
7 | * @author Robert HG (254963746@qq.com) on 4/17/16.
8 | */
9 | public class Main {
10 |
11 | public static void main(String[] args) {
12 |
13 | // final TaskTracker taskTracker = new TaskTracker();
14 | // // 任务执行类,实现JobRunner 接口
15 | // taskTracker.setJobRunnerClass(TestJobRunner.class);
16 | // taskTracker.setRegistryAddress("zookeeper://127.0.0.1:2181");
17 | // taskTracker.setNodeGroup("test_trade_TaskTracker"); // 同一个TaskTracker集群这个名字相同
18 | // taskTracker.setClusterName("test_cluster");
19 | // taskTracker.setWorkThreads(64);
20 | // taskTracker.addConfig("job.fail.store", "mapdb");
21 |
22 | final TaskTracker taskTracker = new TaskTrackerBuilder()
23 | .setPropertiesConfigure("lts.properties")
24 | .build();
25 |
26 | taskTracker.start();
27 |
28 | Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
29 | @Override
30 | public void run() {
31 | taskTracker.stop();
32 | }
33 | }));
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-java/src/main/java/com/github/ltsopensource/example/java/TestJobRunner.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example.java;
2 |
3 | import com.github.ltsopensource.core.domain.Action;
4 | import com.github.ltsopensource.core.logger.Logger;
5 | import com.github.ltsopensource.core.logger.LoggerFactory;
6 | import com.github.ltsopensource.tasktracker.Result;
7 | import com.github.ltsopensource.tasktracker.logger.BizLogger;
8 | import com.github.ltsopensource.tasktracker.runner.JobContext;
9 | import com.github.ltsopensource.tasktracker.runner.JobRunner;
10 |
11 | /**
12 | * @author Robert HG (254963746@qq.com) on 4/17/16.
13 | */
14 | public class TestJobRunner implements JobRunner {
15 |
16 | private static final Logger LOGGER = LoggerFactory.getLogger(TestJobRunner.class);
17 |
18 | @Override
19 | public Result run(JobContext jobContext) throws Throwable {
20 | try {
21 | // BizLogger bizLogger = LtsLoggerFactory.getBizLogger();
22 | BizLogger bizLogger = jobContext.getBizLogger();
23 |
24 | // TODO 业务逻辑
25 | LOGGER.info("我要执行:" + jobContext);
26 | // 会发送到 LTS (JobTracker上)
27 | bizLogger.info("测试,业务日志啊啊啊啊啊");
28 |
29 | } catch (Exception e) {
30 | LOGGER.info("Run job failed!", e);
31 | return new Result(Action.EXECUTE_FAILED, e.getMessage());
32 | }
33 | return new Result(Action.EXECUTE_SUCCESS, "执行成功了,哈哈");
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-java/src/main/resources/log4j.properties:
--------------------------------------------------------------------------------
1 |
2 | log4j.rootLogger=INFO,stdout
3 |
4 | log4j.appender.stdout.Threshold=INFO
5 | log4j.appender.stdout=org.apache.log4j.ConsoleAppender
6 | log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
7 | log4j.appender.stdout.layout.ConversionPattern=%d [%t] (%F:%L) %-5p %c %x - %m%n
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-java/src/main/resources/lts.properties:
--------------------------------------------------------------------------------
1 | lts.tasktracker.cluster-name=test_cluster
2 | lts.tasktracker.registry-address=zookeeper://127.0.0.1:2181
3 | #lts.tasktracker.work-threads=64
4 | lts.tasktracker.node-group=test_trade_TaskTracker
5 | #lts.tasktracker.dispatch-runner.enable=true
6 | #lts.tasktracker.dispatch-runner.shard-value=taskId
7 | lts.tasktracker.configs.job.fail.store=mapdb
8 | lts.tasktracker.job-runner-class=com.github.ltsopensource.example.java.TestJobRunner
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-spring-annotation-shard/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | lts-example-tasktracker
7 | com.github.ltsopensource
8 | 1.7.2-SNAPSHOT
9 |
10 | 4.0.0
11 |
12 | lts-example-tasktracker-spring-annotation-shard
13 |
14 |
15 |
16 | org.springframework
17 | spring-core
18 | ${springframework.version}
19 |
20 |
21 | org.springframework
22 | spring-beans
23 | ${springframework.version}
24 |
25 |
26 | org.springframework
27 | spring-context
28 | ${springframework.version}
29 |
30 |
31 | org.springframework
32 | spring-context-support
33 | ${springframework.version}
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-spring-annotation-shard/src/main/java/com/github/ltsopensource/example/JobScheduler.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example;
2 |
3 | import com.github.ltsopensource.core.domain.Action;
4 | import com.github.ltsopensource.core.logger.Logger;
5 | import com.github.ltsopensource.core.logger.LoggerFactory;
6 | import com.github.ltsopensource.spring.tasktracker.JobRunnerItem;
7 | import com.github.ltsopensource.spring.tasktracker.LTS;
8 | import com.github.ltsopensource.tasktracker.Result;
9 | import com.github.ltsopensource.tasktracker.logger.BizLogger;
10 | import com.github.ltsopensource.tasktracker.runner.JobContext;
11 | import org.springframework.beans.factory.annotation.Autowired;
12 |
13 | /**
14 | * @author Robert HG (254963746@qq.com) on 10/20/15.
15 | */
16 | @LTS
17 | public class JobScheduler {
18 |
19 | private static final Logger LOGGER = LoggerFactory.getLogger(JobScheduler.class);
20 |
21 | @Autowired
22 | SpringBean springBean;
23 |
24 | @JobRunnerItem(shardValue = "111")
25 | public Result runJob1(JobContext jobContext) throws Throwable {
26 | try {
27 | Thread.sleep(1000L);
28 |
29 | springBean.hello();
30 |
31 | LOGGER.info("runJob1 我要执行:" + jobContext.getJob());
32 | BizLogger bizLogger = jobContext.getBizLogger();
33 | // 会发送到 LTS (JobTracker上)
34 | bizLogger.info("测试,业务日志啊啊啊啊啊");
35 |
36 | } catch (Exception e) {
37 | LOGGER.info("Run job failed!", e);
38 | return new Result(Action.EXECUTE_LATER, e.getMessage());
39 | }
40 | return new Result(Action.EXECUTE_SUCCESS, "执行成功了,哈哈");
41 | }
42 |
43 | @JobRunnerItem(shardValue = "222")
44 | public void runJob2(JobContext jobContext) throws Throwable {
45 | try {
46 | springBean.hello();
47 |
48 | LOGGER.info("runJob2 我要执行");
49 | BizLogger bizLogger = jobContext.getBizLogger();
50 | // 会发送到 LTS (JobTracker上)
51 | bizLogger.info("测试,业务日志啊啊啊啊啊");
52 | } catch (Exception e) {
53 | LOGGER.info("Run job failed!", e);
54 | }
55 | }
56 |
57 | }
58 |
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-spring-annotation-shard/src/main/java/com/github/ltsopensource/example/JobScheduler2.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example;
2 |
3 | import com.github.ltsopensource.core.domain.Action;
4 | import com.github.ltsopensource.core.logger.Logger;
5 | import com.github.ltsopensource.core.logger.LoggerFactory;
6 | import com.github.ltsopensource.spring.tasktracker.JobRunnerItem;
7 | import com.github.ltsopensource.spring.tasktracker.LTS;
8 | import com.github.ltsopensource.tasktracker.Result;
9 | import com.github.ltsopensource.tasktracker.logger.BizLogger;
10 | import com.github.ltsopensource.tasktracker.runner.JobContext;
11 | import org.springframework.beans.factory.annotation.Autowired;
12 |
13 | /**
14 | * @author Robert HG (254963746@qq.com) on 10/20/15.
15 | */
16 | @LTS
17 | public class JobScheduler2 {
18 |
19 | private static final Logger LOGGER = LoggerFactory.getLogger(JobScheduler.class);
20 |
21 | @Autowired
22 | SpringBean springBean;
23 |
24 | @JobRunnerItem(shardValue = "333")
25 | public Result runJob1(JobContext jobContext) throws Throwable {
26 | try {
27 | Thread.sleep(1000L);
28 |
29 | springBean.hello();
30 |
31 | LOGGER.info("runJob3 我要执行:" + jobContext.getJob());
32 | BizLogger bizLogger = jobContext.getBizLogger();
33 | // 会发送到 LTS (JobTracker上)
34 | bizLogger.info("测试,业务日志啊啊啊啊啊");
35 |
36 | } catch (Exception e) {
37 | LOGGER.info("Run job failed!", e);
38 | return new Result(Action.EXECUTE_LATER, e.getMessage());
39 | }
40 | return new Result(Action.EXECUTE_SUCCESS, "执行成功了,哈哈");
41 | }
42 |
43 | @JobRunnerItem(shardValue = "444")
44 | public void runJob2(JobContext jobContext) throws Throwable {
45 | try {
46 | springBean.hello();
47 |
48 | LOGGER.info("runJob4 我要执行");
49 | BizLogger bizLogger = jobContext.getBizLogger();
50 | // 会发送到 LTS (JobTracker上)
51 | bizLogger.info("测试,业务日志啊啊啊啊啊");
52 | } catch (Exception e) {
53 | LOGGER.info("Run job failed!", e);
54 | }
55 | }
56 |
57 | }
58 |
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-spring-annotation-shard/src/main/java/com/github/ltsopensource/example/Main.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example;
2 |
3 | import org.springframework.context.support.ClassPathXmlApplicationContext;
4 |
5 | /**
6 | * @author Robert HG (254963746@qq.com) on 4/18/16.
7 | */
8 | public class Main {
9 |
10 | public static void main(String[] args) {
11 | new ClassPathXmlApplicationContext("/lts-tasktracker-shard-annotaion.xml");
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-spring-annotation-shard/src/main/java/com/github/ltsopensource/example/SpringBean.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example;
2 |
3 | import org.springframework.stereotype.Component;
4 |
5 | /**
6 | * 测试bean 注入
7 | * @author Robert HG (254963746@qq.com) on 8/4/15.
8 | */
9 | @Component
10 | public class SpringBean {
11 |
12 | public void hello(){
13 | System.out.println("我是SpringBean,我执行了");
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-spring-annotation-shard/src/main/resources/log4j.properties:
--------------------------------------------------------------------------------
1 |
2 | log4j.rootLogger=INFO,stdout
3 |
4 | log4j.appender.stdout.Threshold=INFO
5 | log4j.appender.stdout=org.apache.log4j.ConsoleAppender
6 | log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
7 | log4j.appender.stdout.layout.ConversionPattern=%d [%t] (%F:%L) %-5p %c %x - %m%n
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-spring-annotation-shard/src/main/resources/lts-tasktracker-shard-annotaion.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | mapdb
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-spring-annotation/lts-example-tasktracker-spring-annotation.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-spring-annotation/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | lts-example-tasktracker
7 | com.github.ltsopensource
8 | 1.7.2-SNAPSHOT
9 |
10 | 4.0.0
11 |
12 | lts-example-tasktracker-spring-annotation
13 |
14 |
15 |
16 | org.springframework
17 | spring-core
18 | ${springframework.version}
19 |
20 |
21 | org.springframework
22 | spring-beans
23 | ${springframework.version}
24 |
25 |
26 | org.springframework
27 | spring-context
28 | ${springframework.version}
29 |
30 |
31 | org.springframework
32 | spring-context-support
33 | ${springframework.version}
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-spring-annotation/src/main/java/com/github/ltsopensource/example/Main.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example;
2 |
3 | import org.springframework.context.ApplicationContext;
4 | import org.springframework.context.support.ClassPathXmlApplicationContext;
5 |
6 | /**
7 | * @author Robert HG (254963746@qq.com) on 4/22/16.
8 | */
9 | public class Main {
10 |
11 | public static void main(String[] args) {
12 | ApplicationContext context = new ClassPathXmlApplicationContext("/lts-tasktracker.xml");
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-spring-annotation/src/main/java/com/github/ltsopensource/example/SpringAnnotationJobRunner.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example;
2 |
3 | import com.github.ltsopensource.core.domain.Action;
4 | import com.github.ltsopensource.core.logger.Logger;
5 | import com.github.ltsopensource.core.logger.LoggerFactory;
6 | import com.github.ltsopensource.tasktracker.Result;
7 | import com.github.ltsopensource.tasktracker.logger.BizLogger;
8 | import com.github.ltsopensource.tasktracker.runner.JobContext;
9 | import com.github.ltsopensource.tasktracker.runner.JobRunner;
10 | import org.springframework.beans.factory.annotation.Autowired;
11 |
12 | /**
13 | * @author Robert HG (254963746@qq.com) on 8/19/14.
14 | */
15 | public class SpringAnnotationJobRunner implements JobRunner {
16 |
17 | private static final Logger LOGGER = LoggerFactory.getLogger(SpringAnnotationJobRunner.class);
18 |
19 | @Autowired
20 | SpringBean springBean;
21 |
22 | @Override
23 | public Result run(JobContext jobContext) throws Throwable {
24 | try {
25 | Thread.sleep(1000L);
26 |
27 | springBean.hello();
28 |
29 | // TODO 业务逻辑
30 | LOGGER.info("我要执行:" + jobContext.getJob());
31 | BizLogger bizLogger = jobContext.getBizLogger();
32 | // 会发送到 LTS (JobTracker上)
33 | bizLogger.info("测试,业务日志啊啊啊啊啊");
34 |
35 | } catch (Exception e) {
36 | LOGGER.info("Run job failed!", e);
37 | return new Result(Action.EXECUTE_LATER, e.getMessage());
38 | }
39 | return new Result(Action.EXECUTE_SUCCESS, "执行成功了,哈哈");
40 | }
41 |
42 | }
43 |
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-spring-annotation/src/main/java/com/github/ltsopensource/example/SpringBean.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example;
2 |
3 | import org.springframework.stereotype.Component;
4 |
5 | /**
6 | * 测试bean 注入
7 | * @author Robert HG (254963746@qq.com) on 8/4/15.
8 | */
9 | @Component
10 | public class SpringBean {
11 |
12 | public void hello(){
13 | System.out.println("我是SpringBean,我执行了");
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-spring-annotation/src/main/java/com/github/ltsopensource/example/TaskTrackerConfig.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example;
2 |
3 | import com.github.ltsopensource.spring.TaskTrackerAnnotationFactoryBean;
4 | import com.github.ltsopensource.tasktracker.TaskTracker;
5 | import org.springframework.beans.BeansException;
6 | import org.springframework.context.ApplicationContext;
7 | import org.springframework.context.ApplicationContextAware;
8 | import org.springframework.context.annotation.Bean;
9 | import org.springframework.context.annotation.Configuration;
10 |
11 | /**
12 | * @author Robert HG (254963746@qq.com) on 4/22/16.
13 | */
14 | @Configuration
15 | public class TaskTrackerConfig implements ApplicationContextAware {
16 |
17 | private ApplicationContext applicationContext;
18 |
19 | @Override
20 | public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
21 | this.applicationContext = applicationContext;
22 | }
23 |
24 | @Bean(name = "taskTracker")
25 | public TaskTracker getTaskTracker() throws Exception {
26 | TaskTrackerAnnotationFactoryBean factoryBean = new TaskTrackerAnnotationFactoryBean();
27 | factoryBean.setApplicationContext(applicationContext);
28 | factoryBean.setJobRunnerClass(SpringAnnotationJobRunner.class);
29 | factoryBean.setLocations("lts.properties");
30 | factoryBean.afterPropertiesSet();
31 | factoryBean.start();
32 | return factoryBean.getObject();
33 | }
34 |
35 | }
36 |
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-spring-annotation/src/main/resources/log4j.properties:
--------------------------------------------------------------------------------
1 |
2 | log4j.rootLogger=INFO,stdout
3 |
4 | log4j.appender.stdout.Threshold=INFO
5 | log4j.appender.stdout=org.apache.log4j.ConsoleAppender
6 | log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
7 | log4j.appender.stdout.layout.ConversionPattern=%d [%t] (%F:%L) %-5p %c %x - %m%n
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-spring-annotation/src/main/resources/lts-tasktracker.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-spring-annotation/src/main/resources/lts.properties:
--------------------------------------------------------------------------------
1 | lts.tasktracker.cluster-name=test_cluster
2 | lts.tasktracker.registry-address=zookeeper://127.0.0.1:2181
3 | #lts.tasktracker.work-threads=64
4 | lts.tasktracker.node-group=test_trade_TaskTracker
5 | #lts.tasktracker.dispatch-runner.enable=true
6 | #lts.tasktracker.dispatch-runner.shard-value=taskId
7 | lts.tasktracker.configs.job.fail.store=mapdb
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-spring-xml-shard/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | lts-example-tasktracker
7 | com.github.ltsopensource
8 | 1.7.2-SNAPSHOT
9 |
10 | 4.0.0
11 |
12 | lts-example-tasktracker-spring-xml-shard
13 |
14 |
15 |
16 | org.springframework
17 | spring-core
18 | ${springframework.version}
19 |
20 |
21 | org.springframework
22 | spring-beans
23 | ${springframework.version}
24 |
25 |
26 | org.springframework
27 | spring-context
28 | ${springframework.version}
29 |
30 |
31 | org.springframework
32 | spring-context-support
33 | ${springframework.version}
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-spring-xml-shard/src/main/java/com/github/ltsopensource/example/Main.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example;
2 |
3 | import org.springframework.context.support.ClassPathXmlApplicationContext;
4 |
5 | /**
6 | * @author Robert HG (254963746@qq.com) on 4/18/16.
7 | */
8 | public class Main {
9 |
10 | public static void main(String[] args) {
11 | new ClassPathXmlApplicationContext("/lts-tasktracker-shard-xml.xml");
12 |
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-spring-xml-shard/src/main/java/com/github/ltsopensource/example/SpringBean.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example;
2 |
3 | import org.springframework.stereotype.Component;
4 |
5 | /**
6 | * 测试bean 注入
7 | * @author Robert HG (254963746@qq.com) on 8/4/15.
8 | */
9 | @Component
10 | public class SpringBean {
11 |
12 | public void hello(){
13 | System.out.println("我是SpringBean,我执行了");
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-spring-xml-shard/src/main/java/com/github/ltsopensource/example/XmlJobScheduler.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example;
2 |
3 | import com.github.ltsopensource.core.domain.Action;
4 | import com.github.ltsopensource.core.logger.Logger;
5 | import com.github.ltsopensource.core.logger.LoggerFactory;
6 | import com.github.ltsopensource.tasktracker.Result;
7 | import com.github.ltsopensource.tasktracker.logger.BizLogger;
8 | import com.github.ltsopensource.tasktracker.runner.JobContext;
9 | import org.springframework.beans.factory.annotation.Autowired;
10 |
11 | /**
12 | * @author Robert HG (254963746@qq.com)on 12/21/15.
13 | */
14 | public class XmlJobScheduler {
15 |
16 | private static final Logger LOGGER = LoggerFactory.getLogger(XmlJobScheduler.class);
17 |
18 | @Autowired
19 | SpringBean springBean;
20 |
21 | public Result runJob1(JobContext jobContext) throws Throwable {
22 | try {
23 | Thread.sleep(1000L);
24 |
25 | springBean.hello();
26 |
27 | LOGGER.info("runJob1 我要执行:" + jobContext.getJob());
28 | BizLogger bizLogger = jobContext.getBizLogger();
29 | // 会发送到 LTS (JobTracker上)
30 | bizLogger.info("测试,业务日志啊啊啊啊啊");
31 |
32 | } catch (Exception e) {
33 | LOGGER.info("Run job failed!", e);
34 | return new Result(Action.EXECUTE_LATER, e.getMessage());
35 | }
36 | return new Result(Action.EXECUTE_SUCCESS, "执行成功了,哈哈");
37 | }
38 |
39 | public Result runJob2(JobContext jobContext) throws Throwable {
40 | try {
41 | springBean.hello();
42 |
43 | LOGGER.info("runJob2 我要执行");
44 | BizLogger bizLogger = jobContext.getBizLogger();
45 | // 会发送到 LTS (JobTracker上)
46 | bizLogger.info("测试,业务日志啊啊啊啊啊");
47 | } catch (Exception e) {
48 | LOGGER.info("Run job failed!", e);
49 | return new Result(Action.EXECUTE_LATER, e.getMessage());
50 | }
51 | return new Result(Action.EXECUTE_SUCCESS, "执行成功了,哈哈");
52 | }
53 |
54 | }
55 |
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-spring-xml-shard/src/main/resources/log4j.properties:
--------------------------------------------------------------------------------
1 |
2 | log4j.rootLogger=INFO,stdout
3 |
4 | log4j.appender.stdout.Threshold=INFO
5 | log4j.appender.stdout=org.apache.log4j.ConsoleAppender
6 | log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
7 | log4j.appender.stdout.layout.ConversionPattern=%d [%t] (%F:%L) %-5p %c %x - %m%n
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-spring-xml-shard/src/main/resources/lts-tasktracker-shard-xml.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | mapdb
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-spring-xml/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | lts-example-tasktracker
7 | com.github.ltsopensource
8 | 1.7.2-SNAPSHOT
9 |
10 | 4.0.0
11 |
12 | lts-example-tasktracker-spring-xml
13 |
14 |
15 |
16 | org.springframework
17 | spring-core
18 | ${springframework.version}
19 |
20 |
21 | org.springframework
22 | spring-beans
23 | ${springframework.version}
24 |
25 |
26 | org.springframework
27 | spring-context
28 | ${springframework.version}
29 |
30 |
31 | org.springframework
32 | spring-context-support
33 | ${springframework.version}
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-spring-xml/src/main/java/com/github/ltsopensource/example/spring/Main.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example.spring;
2 |
3 | import org.springframework.context.ApplicationContext;
4 | import org.springframework.context.support.ClassPathXmlApplicationContext;
5 |
6 | /**
7 | * @author Robert HG (254963746@qq.com) on 4/18/16.
8 | */
9 | public class Main {
10 |
11 | public static void main(String[] args) {
12 | ApplicationContext context = new ClassPathXmlApplicationContext("/lts-tasktracker.xml");
13 |
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-spring-xml/src/main/java/com/github/ltsopensource/example/spring/SpringAnnotationJobRunner.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example.spring;
2 |
3 | import com.github.ltsopensource.core.domain.Action;
4 | import com.github.ltsopensource.core.logger.Logger;
5 | import com.github.ltsopensource.core.logger.LoggerFactory;
6 | import com.github.ltsopensource.tasktracker.Result;
7 | import com.github.ltsopensource.tasktracker.logger.BizLogger;
8 | import com.github.ltsopensource.tasktracker.runner.JobContext;
9 | import com.github.ltsopensource.tasktracker.runner.JobRunner;
10 | import org.springframework.beans.factory.annotation.Autowired;
11 |
12 | /**
13 | * @author Robert HG (254963746@qq.com) on 8/19/14.
14 | */
15 | public class SpringAnnotationJobRunner implements JobRunner {
16 |
17 | private static final Logger LOGGER = LoggerFactory.getLogger(SpringAnnotationJobRunner.class);
18 |
19 | @Autowired
20 | SpringBean springBean;
21 |
22 | @Override
23 | public Result run(JobContext jobContext) throws Throwable {
24 | try {
25 | Thread.sleep(1000L);
26 |
27 | springBean.hello();
28 |
29 | // TODO 业务逻辑
30 | LOGGER.info("我要执行:" + jobContext.getJob());
31 | BizLogger bizLogger = jobContext.getBizLogger();
32 | // 会发送到 LTS (JobTracker上)
33 | bizLogger.info("测试,业务日志啊啊啊啊啊");
34 |
35 | } catch (Exception e) {
36 | LOGGER.info("Run job failed!", e);
37 | return new Result(Action.EXECUTE_LATER, e.getMessage());
38 | }
39 | return new Result(Action.EXECUTE_SUCCESS, "执行成功了,哈哈");
40 | }
41 |
42 | }
43 |
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-spring-xml/src/main/java/com/github/ltsopensource/example/spring/SpringBean.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example.spring;
2 |
3 | import org.springframework.stereotype.Component;
4 |
5 | /**
6 | * 测试bean 注入
7 | * @author Robert HG (254963746@qq.com) on 8/4/15.
8 | */
9 | @Component
10 | public class SpringBean {
11 |
12 | public void hello(){
13 | System.out.println("我是SpringBean,我执行了");
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-spring-xml/src/main/resources/log4j.properties:
--------------------------------------------------------------------------------
1 |
2 | log4j.rootLogger=INFO,stdout
3 |
4 | log4j.appender.stdout.Threshold=INFO
5 | log4j.appender.stdout=org.apache.log4j.ConsoleAppender
6 | log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
7 | log4j.appender.stdout.layout.ConversionPattern=%d [%t] (%F:%L) %-5p %c %x - %m%n
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-spring-xml/src/main/resources/lts-tasktracker.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 | mapdb
26 |
27 |
28 |
29 |
30 |
31 |
32 |
50 |
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-springboot-shard/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | lts-example-tasktracker
7 | com.github.ltsopensource
8 | 1.7.2-SNAPSHOT
9 |
10 | 4.0.0
11 |
12 | lts-example-tasktracker-springboot-shard
13 |
14 |
15 |
16 | org.springframework.boot
17 | spring-boot
18 |
19 |
20 | org.springframework.boot
21 | spring-boot-autoconfigure
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-springboot-shard/src/main/java/com/github/ltsopensource/example/Application.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example;
2 |
3 | import com.github.ltsopensource.spring.boot.annotation.EnableTaskTracker;
4 | import org.springframework.boot.SpringApplication;
5 | import org.springframework.boot.autoconfigure.SpringBootApplication;
6 | import org.springframework.context.annotation.ComponentScan;
7 |
8 | /**
9 | * @author Robert HG (254963746@qq.com) on 4/9/16.
10 | */
11 | @SpringBootApplication
12 | @EnableTaskTracker
13 | @ComponentScan("com.github.ltsopensource.example")
14 | public class Application {
15 |
16 | public static void main(String[] args) {
17 | SpringApplication.run(Application.class, args);
18 | }
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-springboot-shard/src/main/java/com/github/ltsopensource/example/JobScheduler.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example;
2 |
3 | import com.github.ltsopensource.core.domain.Action;
4 | import com.github.ltsopensource.core.logger.Logger;
5 | import com.github.ltsopensource.core.logger.LoggerFactory;
6 | import com.github.ltsopensource.spring.tasktracker.JobRunnerItem;
7 | import com.github.ltsopensource.spring.tasktracker.LTS;
8 | import com.github.ltsopensource.tasktracker.Result;
9 | import com.github.ltsopensource.tasktracker.logger.BizLogger;
10 | import com.github.ltsopensource.tasktracker.runner.JobContext;
11 | import org.springframework.beans.factory.annotation.Autowired;
12 |
13 | /**
14 | * @author Robert HG (254963746@qq.com) on 10/20/15.
15 | */
16 | @LTS
17 | public class JobScheduler {
18 |
19 | private static final Logger LOGGER = LoggerFactory.getLogger(JobScheduler.class);
20 |
21 | @Autowired
22 | SpringBean springBean;
23 |
24 | @JobRunnerItem(shardValue = "111")
25 | public Result runJob1(JobContext jobContext) throws Throwable {
26 | try {
27 | Thread.sleep(1000L);
28 |
29 | springBean.hello();
30 |
31 | LOGGER.info("runJob1 我要执行:" + jobContext.getJob());
32 | BizLogger bizLogger = jobContext.getBizLogger();
33 | // 会发送到 LTS (JobTracker上)
34 | bizLogger.info("测试,业务日志啊啊啊啊啊");
35 |
36 | } catch (Exception e) {
37 | LOGGER.info("Run job failed!", e);
38 | return new Result(Action.EXECUTE_LATER, e.getMessage());
39 | }
40 | return new Result(Action.EXECUTE_SUCCESS, "执行成功了,哈哈");
41 | }
42 |
43 | @JobRunnerItem(shardValue = "222")
44 | public void runJob2(JobContext jobContext) throws Throwable {
45 | try {
46 | springBean.hello();
47 |
48 | LOGGER.info("runJob2 我要执行");
49 | BizLogger bizLogger = jobContext.getBizLogger();
50 | // 会发送到 LTS (JobTracker上)
51 | bizLogger.info("测试,业务日志啊啊啊啊啊");
52 | } catch (Exception e) {
53 | LOGGER.info("Run job failed!", e);
54 | }
55 | }
56 |
57 | }
58 |
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-springboot-shard/src/main/java/com/github/ltsopensource/example/JobScheduler2.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example;
2 |
3 | import com.github.ltsopensource.core.domain.Action;
4 | import com.github.ltsopensource.core.logger.Logger;
5 | import com.github.ltsopensource.core.logger.LoggerFactory;
6 | import com.github.ltsopensource.spring.tasktracker.JobRunnerItem;
7 | import com.github.ltsopensource.spring.tasktracker.LTS;
8 | import com.github.ltsopensource.tasktracker.Result;
9 | import com.github.ltsopensource.tasktracker.logger.BizLogger;
10 | import com.github.ltsopensource.tasktracker.runner.JobContext;
11 | import org.springframework.beans.factory.annotation.Autowired;
12 |
13 | /**
14 | * @author Robert HG (254963746@qq.com) on 10/20/15.
15 | */
16 | @LTS
17 | public class JobScheduler2 {
18 |
19 | private static final Logger LOGGER = LoggerFactory.getLogger(JobScheduler.class);
20 |
21 | @Autowired
22 | SpringBean springBean;
23 |
24 | @JobRunnerItem(shardValue = "333")
25 | public Result runJob1(JobContext jobContext) throws Throwable {
26 | try {
27 | Thread.sleep(1000L);
28 |
29 | springBean.hello();
30 |
31 | LOGGER.info("runJob3 我要执行:" + jobContext.getJob());
32 | BizLogger bizLogger = jobContext.getBizLogger();
33 | // 会发送到 LTS (JobTracker上)
34 | bizLogger.info("测试,业务日志啊啊啊啊啊");
35 |
36 | } catch (Exception e) {
37 | LOGGER.info("Run job failed!", e);
38 | return new Result(Action.EXECUTE_LATER, e.getMessage());
39 | }
40 | return new Result(Action.EXECUTE_SUCCESS, "执行成功了,哈哈");
41 | }
42 |
43 | @JobRunnerItem(shardValue = "444")
44 | public void runJob2(JobContext jobContext) throws Throwable {
45 | try {
46 | springBean.hello();
47 |
48 | LOGGER.info("runJob4 我要执行");
49 | BizLogger bizLogger = jobContext.getBizLogger();
50 | // 会发送到 LTS (JobTracker上)
51 | bizLogger.info("测试,业务日志啊啊啊啊啊");
52 | } catch (Exception e) {
53 | LOGGER.info("Run job failed!", e);
54 | }
55 | }
56 |
57 | }
58 |
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-springboot-shard/src/main/java/com/github/ltsopensource/example/SpringBean.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example;
2 |
3 | import org.springframework.stereotype.Component;
4 |
5 | /**
6 | * 测试bean 注入
7 | * @author Robert HG (254963746@qq.com) on 8/4/15.
8 | */
9 | @Component
10 | public class SpringBean {
11 |
12 | public void hello(){
13 | System.out.println("我是SpringBean,我执行了");
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-springboot-shard/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | lts.tasktracker.cluster-name=test_cluster
2 | lts.tasktracker.registry-address=zookeeper://127.0.0.1:2181
3 | #lts.tasktracker.work-threads=64
4 | lts.tasktracker.node-group=test_trade_TaskTracker
5 | #lts.tasktracker.dispatch-runner.enable=true
6 | #lts.tasktracker.dispatch-runner.shard-value=taskId
7 | lts.tasktracker.configs.job.fail.store=mapdb
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-springboot-shard/src/main/resources/log4j.properties:
--------------------------------------------------------------------------------
1 |
2 | log4j.rootLogger=INFO,stdout
3 |
4 | log4j.appender.stdout.Threshold=INFO
5 | log4j.appender.stdout=org.apache.log4j.ConsoleAppender
6 | log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
7 | log4j.appender.stdout.layout.ConversionPattern=%d [%t] (%F:%L) %-5p %c %x - %m%n
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-tester/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | lts-example-tasktracker
7 | com.github.ltsopensource
8 | 1.7.2-SNAPSHOT
9 |
10 | 4.0.0
11 |
12 | lts-example-tasktracker-tester
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-tester/src/main/java/com/github/ltsopensource/example/TestJobRunner.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example;
2 |
3 | import com.github.ltsopensource.core.domain.Action;
4 | import com.github.ltsopensource.core.logger.Logger;
5 | import com.github.ltsopensource.core.logger.LoggerFactory;
6 | import com.github.ltsopensource.tasktracker.Result;
7 | import com.github.ltsopensource.tasktracker.logger.BizLogger;
8 | import com.github.ltsopensource.tasktracker.runner.JobContext;
9 | import com.github.ltsopensource.tasktracker.runner.JobRunner;
10 |
11 | /**
12 | * @author Robert HG (254963746@qq.com) on 8/19/14.
13 | */
14 | public class TestJobRunner implements JobRunner {
15 |
16 | private static final Logger LOGGER = LoggerFactory.getLogger(TestJobRunner.class);
17 |
18 | @Override
19 | public Result run(JobContext jobContext) throws Throwable {
20 | try {
21 | BizLogger bizLogger = jobContext.getBizLogger();
22 |
23 | // TODO 业务逻辑
24 | LOGGER.info("我要执行:" + jobContext);
25 | // 会发送到 LTS (JobTracker上)
26 | bizLogger.info("测试,业务日志啊啊啊啊啊");
27 |
28 | } catch (Exception e) {
29 | LOGGER.info("Run job failed!", e);
30 | return new Result(Action.EXECUTE_FAILED, e.getMessage());
31 | }
32 | return new Result(Action.EXECUTE_SUCCESS, "执行成功了,哈哈");
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/lts-example-tasktracker/lts-example-tasktracker-tester/src/main/java/com/github/ltsopensource/example/TestJobRunnerTester.java:
--------------------------------------------------------------------------------
1 | package com.github.ltsopensource.example;
2 |
3 | import com.github.ltsopensource.core.domain.Job;
4 | import com.github.ltsopensource.core.json.JSON;
5 | import com.github.ltsopensource.tasktracker.Result;
6 | import com.github.ltsopensource.tasktracker.runner.JobContext;
7 | import com.github.ltsopensource.tasktracker.runner.JobExtInfo;
8 | import com.github.ltsopensource.tasktracker.runner.JobRunner;
9 | import com.github.ltsopensource.tasktracker.runner.JobRunnerTester;
10 |
11 | /**
12 | * @author Robert HG (254963746@qq.com) on 9/13/15.
13 | */
14 | public class TestJobRunnerTester extends JobRunnerTester {
15 |
16 | public static void main(String[] args) throws Throwable {
17 | // Mock Job 数据
18 | Job job = new Job();
19 | job.setTaskId("2313213");
20 |
21 | JobContext jobContext = new JobContext();
22 | jobContext.setJob(job);
23 |
24 | JobExtInfo jobExtInfo = new JobExtInfo();
25 | jobExtInfo.setRetry(false);
26 |
27 | jobContext.setJobExtInfo(jobExtInfo);
28 |
29 | // 运行测试
30 | TestJobRunnerTester tester = new TestJobRunnerTester();
31 | Result result = tester.run(jobContext);
32 | System.out.println(JSON.toJSONString(result));
33 | }
34 |
35 | @Override
36 | protected void initContext() {
37 | // TODO 初始化Spring容器
38 | }
39 |
40 | @Override
41 | protected JobRunner newJobRunner() {
42 | return new TestJobRunner();
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/lts-example-tasktracker/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | lts-examples
7 | com.github.ltsopensource
8 | 1.7.2-SNAPSHOT
9 |
10 | 4.0.0
11 | pom
12 |
13 | lts-example-tasktarcker-springboot
14 | lts-example-tasktracker-java
15 | lts-example-tasktracker-spring-xml
16 | lts-example-tasktracker-spring-annotation-shard
17 | lts-example-tasktracker-spring-xml-shard
18 | lts-example-tasktracker-spring-annotation
19 | lts-example-tasktracker-springboot-shard
20 | lts-example-tasktracker-tester
21 |
22 | lts-example-tasktracker
23 |
24 |
25 |
26 | com.github.ltsopensource
27 | lts
28 |
29 |
30 | log4j
31 | log4j
32 |
33 |
34 | com.github.sgroschupf
35 | zkclient
36 |
37 |
38 | io.netty
39 | netty-all
40 |
41 |
42 | com.alibaba
43 | fastjson
44 |
45 |
46 | org.mapdb
47 | mapdb
48 |
49 |
50 | org.javassist
51 | javassist
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 4.0.0
6 | com.github.ltsopensource
7 | lts-examples
8 | 1.7.2-SNAPSHOT
9 |
10 | lts-example-jobtracker
11 | lts-example-tasktracker
12 | lts-example-jobclient
13 | lts-example-monitor
14 | lts-example-quartz
15 |
16 |
17 |
18 | 2.7.3
19 | 1.2.7
20 | 1.8
21 | 2.9.1
22 | 0.1
23 | 3.4.5
24 | 3.0.2
25 | 1.0.0-rc1
26 | 4.11
27 | 4.0.20.Final
28 | 1.7.5
29 | 1.2.16
30 | 1.6
31 | 1.0.14
32 | 5.1.26
33 | 5.0.73
34 | 3.10.1
35 | 1.4.189
36 | 4.2.5.RELEASE
37 | 2.0.9
38 | 4.0.38
39 | 2.0-beta10
40 | 2.4.5
41 | 2.6.3
42 | 1.7.2
43 | 1.5.4
44 | 1.3.3.RELEASE
45 | 1.7.2-SNAPSHOT
46 | 2.2.2
47 | 3.20.0-GA
48 |
49 |
50 | pom
51 |
52 |
53 |
54 | com.github.ltsopensource
55 | lts
56 | ${lts.version}
57 |
58 |
59 | log4j
60 | log4j
61 | ${log4j.version}
62 |
63 |
64 | com.github.sgroschupf
65 | zkclient
66 | ${zkclient.version}
67 |
68 |
69 | log4j
70 | log4j
71 |
72 |
73 |
74 |
75 | org.apache.curator
76 | curator-recipes
77 | ${curator.version}
78 |
79 |
80 | redis.clients
81 | jedis
82 | ${jedis.version}
83 |
84 |
85 | com.sleepycat
86 | je
87 | ${sleepycat.version}
88 |
89 |
90 | org.rocksdb
91 | rocksdbjni
92 | ${rocksdbjni.version}
93 |
94 |
95 | org.fusesource.leveldbjni
96 | leveldbjni-all
97 | ${leveldbjni.version}
98 |
99 |
100 | org.springframework
101 | spring-core
102 | ${springframework.version}
103 |
104 |
105 | org.springframework
106 | spring-beans
107 | ${springframework.version}
108 |
109 |
110 | org.springframework
111 | spring-context
112 | ${springframework.version}
113 |
114 |
115 | org.springframework
116 | spring-context-support
117 | ${springframework.version}
118 |
119 |
120 | org.springframework
121 | spring-tx
122 | ${springframework.version}
123 |
124 |
125 | org.apache.mina
126 | mina-core
127 | ${mina.version}
128 |
129 |
130 | io.netty
131 | netty-all
132 | ${netty.version}
133 |
134 |
135 | com.caucho
136 | hessian
137 | ${hessian.version}
138 |
139 |
140 | org.mapdb
141 | mapdb
142 | ${mapdb.version}
143 |
144 |
145 | com.alibaba
146 | fastjson
147 | ${fastjson.version}
148 |
149 |
150 | com.fasterxml.jackson.core
151 | jackson-core
152 | ${jackson.version}
153 |
154 |
155 | com.fasterxml.jackson.core
156 | jackson-databind
157 | ${jackson.version}
158 |
159 |
160 | org.mongodb.morphia
161 | morphia
162 | ${morphia.version}
163 |
164 |
165 | org.mongodb
166 | mongo-java-driver
167 | ${mongo.driver.version}
168 |
169 |
170 | mysql
171 | mysql-connector-java
172 | ${mysql.version}
173 |
174 |
175 | com.alibaba
176 | druid
177 | ${druid.version}
178 |
179 |
180 | org.quartz-scheduler
181 | quartz
182 | ${quartz.version}
183 |
184 |
185 | org.springframework.boot
186 | spring-boot
187 | ${spring.boot.version}
188 |
189 |
190 | org.springframework.boot
191 | spring-boot-autoconfigure
192 | ${spring.boot.version}
193 |
194 |
195 | org.javassist
196 | javassist
197 | ${javassist.version}
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 | maven-compiler-plugin
206 |
207 | 1.6
208 | 1.6
209 | UTF-8
210 |
211 |
212 |
213 | maven-source-plugin
214 | 2.2.1
215 |
216 | true
217 |
218 |
219 |
220 | compile
221 |
222 | jar
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
--------------------------------------------------------------------------------