Skip to content

Commit 387e29b

Browse files
committed
2.0
1 parent dbda99d commit 387e29b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+890
-591
lines changed

README.md

Lines changed: 29 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
5. 进入测试项目target目录下,执行脚本
5757

5858
```sh
59-
java -javaagent:本地路径(替换为自己的)\javaagent\target\SuperAgent-jar-with-dependencies.jar=ctlClass=com.shadow.controller.AgentBaseController,tlClass=com.shadow.supports.framework.ScheduleService,tlFieldName=JOB_PARAMETERS_THREAD_LOCAL,debug=true,logger=true,crudFieldName=xxxx,crud=true,proxyType=asm,jobType=spring -jar shadow.jar
59+
java -javaagent:本地路径(替换为自己的)\javaagent\target\SuperAgent-jar-with-dependencies.jar=ctlClass=com.shadow.controller.AgentBaseController,jobType=spring -jar shadow.jar
6060
```
6161

6262
6. 测试定时任务立即执行及CRUD
@@ -126,7 +126,7 @@
126126

127127
```sh
128128
# 启动项目
129-
java -javaagent:本地路径(替换为自己的)\javaagent\target\SuperAgent-jar-with-dependencies.jar=ctlClass=com.shadow.controller.AgentBaseController,tlClass=com.shadow.supports.framework.ScheduleService,tlFieldName=JOB_PARAMETERS_THREAD_LOCAL,debug=true,logger=true,crudFieldName=xxxx,crud=true,proxyType=asm,jobType=xxl -jar shadow.jar
129+
java -javaagent:本地路径(替换为自己的)\javaagent\target\SuperAgent-jar-with-dependencies.jar=ctlClass=com.shadow.controller.AgentBaseController,jobType=xxl -jar shadow.jar
130130
```
131131

132132
```sh
@@ -142,26 +142,26 @@
142142

143143
```sh
144144
# 启动项目
145-
java -javaagent:本地路径(替换为自己的)\javaagent\target\SuperAgent-jar-with-dependencies.jar=ctlClass=com.shadow.controller.AgentBaseController,tlClass=com.shadow.supports.framework.ScheduleService,tlFieldName=JOB_PARAMETERS_THREAD_LOCAL,debug=true,logger=true,crudFieldName=xxxx,crud=true,proxyType=asm,jobType=quartz -jar shadow.jar
145+
java -javaagent:本地路径(替换为自己的)\javaagent\target\SuperAgent-jar-with-dependencies.jar=ctlClass=com.shadow.controller.AgentBaseController,jobType=quartz -jar shadow.jar
146146
```
147147

148148
```sh
149149
# 执行定时任务 [quartzTriggerKey] 为 Trigger Bean,[quartzJob]为 job detail ID
150-
curl -H "Content-Type:application/json" -X POST --data "{\"name\":\"shadow\",\"age\":20}" localhost:50084/shadow/api/system/agent/run/quartzTriggerKey?params=quartzJob
150+
curl -H "Content-Type:application/json" -X POST --data "{\"name\":\"shadow\",\"age\":20}" localhost:50084/shadow/api/system/agent/run/quartzTriggerKey?params=测试
151151
# 修改 cron 表达式为 0/3 * * * * ?
152152
curl localhost:50084/shadow/api/system/agent/crud/1/quartzTriggerKey@quartzJob?cron=0/3%20*%20*%20*%20*%20?
153153
```
154154

155155
> Quartz 定时任务存在特殊性:
156156
>
157-
> - 除了指定 taskKey 的 trigger 外,还需要额外指定 job detail 的 ID,此处使用了 params 请求参数来传递 job detail 的值
157+
> - 除了指定 taskKey 的 trigger 外,还需要额外指定 job detail 的 ID,quartzTriggerKey@quartzJob
158158
> - 其参数传递不能使用 ThreadLocal 方式,需要使用其 JobDataMap 的方式
159159
160160
- spring job 测试
161161

162162
```sh
163163
# 启动项目
164-
java -javaagent:本地路径(替换为自己的)\javaagent\target\SuperAgent-jar-with-dependencies.jar=ctlClass=com.shadow.controller.AgentBaseController,tlClass=com.shadow.supports.framework.ScheduleService,tlFieldName=JOB_PARAMETERS_THREAD_LOCAL,debug=true,logger=true,crudFieldName=xxxx,crud=true,proxyType=asm,jobType=spring -jar shadow.jar
164+
java -javaagent:本地路径(替换为自己的)\javaagent\target\SuperAgent-jar-with-dependencies.jar=ctlClass=com.shadow.controller.AgentBaseController,jobType=spring -jar shadow.jar
165165
```
166166

167167
```sh
@@ -178,12 +178,12 @@
178178

179179
```sh
180180
# 启动项目
181-
java -javaagent:本地路径(替换为自己的)\javaagent\target\SuperAgent-jar-with-dependencies.jar=ctlClass=com.shadow.controller.AgentBaseController,tlClass=com.shadow.supports.framework.ScheduleService,tlFieldName=JOB_PARAMETERS_THREAD_LOCAL,debug=true,logger=true,crudFieldName=xxxx,crud=true,proxyType=asm,jobType=simple -jar shadow.jar
181+
java -javaagent:本地路径(替换为自己的)\javaagent\target\SuperAgent-jar-with-dependencies.jar=ctlClass=com.shadow.controller.AgentBaseController,jobType=simple -jar shadow.jar
182182
```
183183

184184
```sh
185185
# 执行定时任务 [simple1] 为 spring 容器 Bean 名称
186-
curl localhost:50084/shadow/api/system//agent/run/simple1?testSimple
186+
curl localhost:50084/shadow/api/system//agent/run/simple1?params=testSimple
187187
# 修改 cron 表达式为 0/3 * * * * ?
188188
curl localhost:50084/shadow/api/system/agent/crud/1/simple2?cron=0/3%20*%20*%20*%20*%20?
189189
```
@@ -212,10 +212,27 @@
212212
213213
214214
215-
#### 8、Attach 机制 - 可动态替换定时任务类型 TODO
215+
#### 8、Attach 机制 - 可动态替换定时任务类型
216216
217217
> 测试类:com.shadow.agent.AttachAgentTest
218218
>
219-
> ```sh
220-
> originJobType=xxl&jobType=simple&ctlClass=com.shadow.controller.AgentBaseController&methodName=testMethod&iocFieldName=ioc&tlClass=com.shadow.supports.framework.ScheduleService&tlFieldName=JOB_PARAMETERS_THREAD_LOCAL&debug=true
221-
> ```
219+
> - IDEA 测试
220+
>
221+
> - 加入启动参数
222+
>
223+
> ```sh
224+
> # IDEA vm options
225+
> -javaagent:本地路径(替换为自己的)\javaagent\target\SuperAgent-jar-with-dependencies.jar=jobType=xxl,ctlClass=com.shadow.controller.AgentBaseController,jobType=spring,logger=true
226+
> ```
227+
>
228+
> - 执行 com.shadow.agent.AttachAgentTest
229+
>
230+
> > 注意:originJobType 的值是原始定时任务类型,支持重复操作
231+
>
232+
> - jar 测试
233+
>
234+
> - 启动参数
235+
>
236+
> ```sh
237+
> java -javaagent:本地路径(替换为自己的)\javaagent\target\SuperAgent-jar-with-dependencies.jar=jobType=xxl,ctlClass=com.shadow.controller.AgentBaseController,jobType=spring,logger=true -jar shadow.jar
238+
> ```

javaagent+schedule项目POSTMAN测试.json

Lines changed: 124 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
"raw": "{\n\t\"name\":\"王钦\",\n\t\"age\":20\n}"
2323
},
2424
"url": {
25-
"raw": "localhost:50084/shadow/api/system/agent/run/xxl2?params=王钦",
25+
"raw": "localhost:50084/shadow/api/system/agent/run/xxl1?params=测试",
2626
"host": [
2727
"localhost"
2828
],
@@ -33,12 +33,12 @@
3333
"system",
3434
"agent",
3535
"run",
36-
"xxl2"
36+
"xxl1"
3737
],
3838
"query": [
3939
{
4040
"key": "params",
41-
"value": "王钦"
41+
"value": "测试"
4242
}
4343
]
4444
}
@@ -62,7 +62,7 @@
6262
"raw": "{\n\t\"name\":\"王钦\",\n\t\"age\":20\n}"
6363
},
6464
"url": {
65-
"raw": "localhost:50084/shadow/api/system/agent/run/quartzTriggerKey?params=quartzJob",
65+
"raw": "localhost:50084/shadow/api/system/agent/run/quartzTriggerKey?params=测试",
6666
"host": [
6767
"localhost"
6868
],
@@ -78,7 +78,7 @@
7878
"query": [
7979
{
8080
"key": "params",
81-
"value": "quartzJob"
81+
"value": "测试"
8282
}
8383
]
8484
}
@@ -102,7 +102,7 @@
102102
"raw": "{\n\t\"name\":\"王钦\",\n\t\"age\":20\n}"
103103
},
104104
"url": {
105-
"raw": "localhost:50084/shadow/api/system/agent/run/spring2?params=王钦1",
105+
"raw": "localhost:50084/shadow/api/system/agent/run/spring2?params=测试",
106106
"host": [
107107
"localhost"
108108
],
@@ -118,7 +118,7 @@
118118
"query": [
119119
{
120120
"key": "params",
121-
"value": "王钦1"
121+
"value": "测试"
122122
}
123123
]
124124
}
@@ -142,7 +142,7 @@
142142
"raw": "{\n\t\"name\":\"王钦\",\n\t\"age\":20\n}"
143143
},
144144
"url": {
145-
"raw": "localhost:50084/shadow/api/system/agent/run/simple1?params=王钦1",
145+
"raw": "localhost:50084/shadow/api/system/agent/run/simple1?params=测试",
146146
"host": [
147147
"localhost"
148148
],
@@ -158,7 +158,122 @@
158158
"query": [
159159
{
160160
"key": "params",
161-
"value": "王钦1"
161+
"value": "测试"
162+
}
163+
]
164+
}
165+
},
166+
"response": []
167+
},
168+
{
169+
"name": "Xxl 定时任务 - 查",
170+
"request": {
171+
"method": "GET",
172+
"header": [],
173+
"body": {
174+
"mode": "raw",
175+
"raw": ""
176+
},
177+
"url": "localhost:50084/shadow/api/system/agent/crud/1/1"
178+
},
179+
"response": []
180+
},
181+
{
182+
"name": "Quartz 定时任务 - 增删改查",
183+
"request": {
184+
"method": "GET",
185+
"header": [],
186+
"body": {
187+
"mode": "raw",
188+
"raw": ""
189+
},
190+
"url": {
191+
"raw": "localhost:50084/shadow/api/system/agent/crud/1/quartzTriggerKey@quartzJob?cron=0/2 * * * * ?",
192+
"host": [
193+
"localhost"
194+
],
195+
"port": "50084",
196+
"path": [
197+
"shadow",
198+
"api",
199+
"system",
200+
"agent",
201+
"crud",
202+
"1",
203+
"quartzTriggerKey@quartzJob"
204+
],
205+
"query": [
206+
{
207+
"key": "cron",
208+
"value": "0/2 * * * * ?"
209+
}
210+
]
211+
}
212+
},
213+
"response": []
214+
},
215+
{
216+
"name": "Spring 定时任务 - 增删改查",
217+
"request": {
218+
"method": "GET",
219+
"header": [],
220+
"body": {
221+
"mode": "raw",
222+
"raw": ""
223+
},
224+
"url": {
225+
"raw": "localhost:50084/shadow/api/system/agent/crud/1/spring1?cron=0/2 * * * * ?",
226+
"host": [
227+
"localhost"
228+
],
229+
"port": "50084",
230+
"path": [
231+
"shadow",
232+
"api",
233+
"system",
234+
"agent",
235+
"crud",
236+
"1",
237+
"spring1"
238+
],
239+
"query": [
240+
{
241+
"key": "cron",
242+
"value": "0/2 * * * * ?"
243+
}
244+
]
245+
}
246+
},
247+
"response": []
248+
},
249+
{
250+
"name": "Simple 定时任务 - 增删改查",
251+
"request": {
252+
"method": "GET",
253+
"header": [],
254+
"body": {
255+
"mode": "raw",
256+
"raw": ""
257+
},
258+
"url": {
259+
"raw": "localhost:50084/shadow/api/system/agent/crud/1/simple2?cron=0/2 * * * * ?",
260+
"host": [
261+
"localhost"
262+
],
263+
"port": "50084",
264+
"path": [
265+
"shadow",
266+
"api",
267+
"system",
268+
"agent",
269+
"crud",
270+
"1",
271+
"simple2"
272+
],
273+
"query": [
274+
{
275+
"key": "cron",
276+
"value": "0/2 * * * * ?"
162277
}
163278
]
164279
}
Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,26 @@
11
package com.shadow.agent;
22

3+
import com.shadow.common.RequestArgsVO;
34
import com.shadow.utils.CommonConstants;
45

5-
import java.util.Map;
66

77
class BaseAgent {
88

9-
static void handleCommonDefaultArgs(Map<String, String> resolveArgs) {
10-
// 1、DEBUG
11-
resolveArgs.putIfAbsent(CommonConstants.DEBUG, "false");
12-
// 2、CRUD 相关
13-
resolveArgs.putIfAbsent(CommonConstants.TASK_CRUD, "true");
14-
resolveArgs.computeIfAbsent(CommonConstants.SIMPLE_JOB_IOC_FIELD_NAME, k -> CommonConstants.DEFAULT_SIMPLE_JOB_IOC_FIELD_NAME);
15-
// 3、HTTP_REQUEST_URI
16-
if (resolveArgs.get(CommonConstants.HTTP_REQUEST_PREFIX_URI) != null) {
17-
resolveArgs.put(CommonConstants.HTTP_REQUEST_PREFIX_URI, resolveArgs.get(CommonConstants.HTTP_REQUEST_PREFIX_URI) + CommonConstants.PATH_SUFFIX);
9+
static void handleCommonDefaultArgs(RequestArgsVO argsBean) {
10+
// 1、SIMPLE JOB IOC
11+
if (argsBean.getCrudFieldName() == null) {
12+
argsBean.setCrudFieldName(CommonConstants.DEFAULT_SIMPLE_JOB_IOC_FIELD_NAME);
13+
}
14+
// 2、HTTP_REQUEST_URI
15+
if (argsBean.getHttpUri() != null) {
16+
argsBean.setHttpUri(argsBean.getHttpUri() + CommonConstants.PATH_SUFFIX);
1817
} else {
19-
resolveArgs.put(CommonConstants.HTTP_REQUEST_PREFIX_URI, CommonConstants.DEFAULT_HTTP_PATH_PREFIX + CommonConstants.PATH_SUFFIX);
18+
argsBean.setHttpUri(CommonConstants.DEFAULT_HTTP_PATH_PREFIX + CommonConstants.PATH_SUFFIX);
19+
}
20+
// 3、IOC_FIELD_NAME
21+
if (argsBean.getIocFieldName() == null) {
22+
argsBean.setIocFieldName(CommonConstants.DEFAULT_IOC_FIELD_VALUE);
2023
}
21-
// 4、IOC_FIELD_NAME
22-
resolveArgs.computeIfAbsent(CommonConstants.IOC_FIELD_NAME, k -> CommonConstants.DEFAULT_IOC_FIELD_VALUE);
2324
}
2425

2526
}

0 commit comments

Comments
 (0)