Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
B
byit-myth-job
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
liyuan
byit-myth-job
Commits
a7b4ef9d
Commit
a7b4ef9d
authored
Nov 20, 2019
by
huangfusuper
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加本地java任务的执行插件,添加测试案例!添加本低java任务的执行task
parent
1297cb2f
Show whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
310 additions
and
166 deletions
+310
-166
pom.xml
byit-myth-admin/pom.xml
+7
-0
AdminApplication.java
byit-myth-admin/src/main/java/com/byit/AdminApplication.java
+17
-0
JobController.java
...dmin/src/main/java/com/byit/controller/JobController.java
+22
-0
pom.xml
byit-myth-core/myth-admin-core/pom.xml
+7
-0
WorkRoulette.java
...h-admin-core/src/main/java/com/byit/job/WorkRoulette.java
+5
-11
JavaBeanJobTask.java
...min-core/src/main/java/com/byit/task/JavaBeanJobTask.java
+34
-0
pom.xml
byit-myth-core/myth-core-common/pom.xml
+28
-0
JobHandler.java
...ore/src/main/java/com/byit/job/annotation/JobHandler.java
+0
-15
ScanRootPackage.java
...-plugin/src/main/java/com/byit/utils/ScanRootPackage.java
+121
-0
pom.xml
byit-myth-executor/myth-exector/pom.xml
+0
-17
pom.xml
byit-myth-executor/myth-executor-server/pom.xml
+1
-1
ExcecutorConfig.java
...r-server/src/main/java/com/byit/conf/ExcecutorConfig.java
+0
-19
ExecutorRpcConfig.java
...server/src/main/java/com/byit/conf/ExecutorRpcConfig.java
+0
-45
ExecutorServerImpl.java
...r/src/main/java/com/byit/executor/ExecutorServerImpl.java
+0
-23
DemoHandel.java
...tor-server/src/main/java/com/byit/service/DemoHandel.java
+0
-34
pom.xml
byit-myth-executor/pom.xml
+1
-1
pom.xml
demo-client/byit-demo-client/pom.xml
+12
-0
DemoJob.java
.../byit-demo-client/src/main/java/com/byit/job/DemoJob.java
+20
-0
Mains.java
...nt/byit-demo-client/src/main/java/com/byit/job/Mains.java
+35
-0
No files found.
byit-myth-admin/pom.xml
View file @
a7b4ef9d
...
...
@@ -25,6 +25,12 @@
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
</dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
fastjson
</artifactId>
<version>
1.2.62
</version>
</dependency>
</dependencies>
</project>
\ No newline at end of file
byit-myth-admin/src/main/java/com/byit/AdminApplication.java
0 → 100644
View file @
a7b4ef9d
package
com
.
byit
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
/**
* @program: byit-myth-job->AdminApplication
* @description: 管理启动类
* @author: huangfu
* @date: 2019/11/20 11:44
**/
@SpringBootApplication
public
class
AdminApplication
{
public
static
void
main
(
String
[]
args
)
{
SpringApplication
.
run
(
AdminApplication
.
class
,
args
);
}
}
byit-myth-admin/src/main/java/com/byit/controller/JobController.java
0 → 100644
View file @
a7b4ef9d
package
com
.
byit
.
controller
;
import
com.byit.job.WorkRoulette
;
import
com.byit.job.model.JavaBeanJobInfo
;
import
org.springframework.web.bind.annotation.*
;
/**
* @program: byit-myth-job->JobHandel
* @description: 测试添加任务
* @author: huangfu
* @date: 2019/11/20 11:57
**/
@RestController
@RequestMapping
(
"job"
)
public
class
JobController
{
@PostMapping
(
value
=
"addJob"
)
public
String
addJob
(
@RequestBody
JavaBeanJobInfo
javaBeanJobInfo
){
WorkRoulette
.
addJob
(
javaBeanJobInfo
);
return
"SUCCESS"
;
}
}
byit-myth-core/myth-admin-core/pom.xml
View file @
a7b4ef9d
...
...
@@ -38,6 +38,12 @@
<groupId>
myth-job
</groupId>
<artifactId>
myth-core-common
</artifactId>
</dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
fastjson
</artifactId>
<version>
1.2.62
</version>
</dependency>
</dependencies>
</project>
\ No newline at end of file
byit-myth-core/myth-admin-core/src/main/java/com/byit/job/WorkRoulette.java
View file @
a7b4ef9d
package
com
.
byit
.
job
;
import
com.byit.job.handler.interfaces.IJobHandler
;
import
com.byit.job.instancecache.JavaBeanInstanceCache
;
import
com.byit.task.JobTask
;
import
com.byit.job.model.JavaBeanJobInfo
;
import
com.byit.task.JavaBeanJobTask
;
import
io.netty.util.HashedWheelTimer
;
import
java.util.TimerTask
;
import
java.util.concurrent.ThreadFactory
;
import
java.util.concurrent.TimeUnit
;
...
...
@@ -31,13 +29,9 @@ public class WorkRoulette {
},
1
,
TimeUnit
.
SECONDS
,
8
,
true
,
0
);
public
static
void
addJob
(){
IJobHandler
testJob
=
JavaBeanInstanceCache
.
getJobHandler
(
"testJob"
);
JobTask
jobTask
=
new
JobTask
(
testJob
,
"测试参数"
);
hashedWheelTimer
.
newTimeout
(
jobTask
,
10000000000L
,
TimeUnit
.
NANOSECONDS
);
public
static
void
addJob
(
JavaBeanJobInfo
javaBeanJobInfo
){
JavaBeanJobTask
javaBeanJobTask
=
new
JavaBeanJobTask
(
javaBeanJobInfo
);
hashedWheelTimer
.
newTimeout
(
javaBeanJobTask
,
TimeUnit
.
SECONDS
.
toNanos
(
20
),
TimeUnit
.
NANOSECONDS
);
}
public
static
void
main
(
String
[]
args
)
{
System
.
out
.
println
(
TimeUnit
.
SECONDS
.
toNanos
(
10
));
}
}
byit-myth-core/myth-admin-core/src/main/java/com/byit/task/JavaBeanJobTask.java
0 → 100644
View file @
a7b4ef9d
package
com
.
byit
.
task
;
import
cn.hutool.http.HttpUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.byit.job.model.JavaBeanJobInfo
;
import
io.netty.util.Timeout
;
import
io.netty.util.TimerTask
;
/**
* @program: byit-myth-job->JvavBeanJobTask
* @description: 开发者编写的java job
* @author: huangfu
* @date: 2019/11/20 15:08
**/
public
class
JavaBeanJobTask
implements
TimerTask
{
private
JavaBeanJobInfo
javaBeanJobInfo
;
public
JavaBeanJobTask
(
JavaBeanJobInfo
javaBeanJobInfo
)
{
this
.
javaBeanJobInfo
=
javaBeanJobInfo
;
}
@Override
public
void
run
(
Timeout
timeout
)
throws
Exception
{
String
url
=
javaBeanJobInfo
.
getUrl
(
);
String
jobHandelName
=
javaBeanJobInfo
.
getJobHandelName
(
);
String
param
=
javaBeanJobInfo
.
getParam
(
);
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"jobHandelName"
,
jobHandelName
);
jsonObject
.
put
(
"param"
,
param
);
String
result
=
HttpUtil
.
post
(
url
,
JSON
.
toJSONString
(
jsonObject
),
10
*
1000
);
}
}
byit-myth-core/myth-core-common/pom.xml
View file @
a7b4ef9d
...
...
@@ -12,5 +12,32 @@
<groupId>
myth-job
</groupId>
<artifactId>
myth-core-common
</artifactId>
<dependencies>
<!-- slf4j -->
<dependency>
<groupId>
org.slf4j
</groupId>
<artifactId>
slf4j-api
</artifactId>
<version>
${slf4j-api.version}
</version>
</dependency>
<dependency>
<groupId>
org.slf4j
</groupId>
<artifactId>
slf4j-log4j12
</artifactId>
<version>
${slf4j-api.version}
</version>
<scope>
test
</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
<dependency>
<groupId>
org.apache.httpcomponents
</groupId>
<artifactId>
httpclient
</artifactId>
<version>
4.5.10
</version>
</dependency>
<dependency>
<groupId>
cn.hutool
</groupId>
<artifactId>
hutool-all
</artifactId>
<version>
4.5.11
</version>
</dependency>
</dependencies>
</project>
\ No newline at end of file
byit-myth-core/myth-executor-core/src/main/java/com/byit/job/annotation/JobHandler.java
deleted
100644 → 0
View file @
1297cb2f
package
com
.
byit
.
job
.
annotation
;
import
java.lang.annotation.*
;
/**
* 主要应用在本地java任务上
*/
@Target
({
ElementType
.
TYPE
})
@Retention
(
RetentionPolicy
.
RUNTIME
)
@Documented
public
@interface
JobHandler
{
String
value
();
}
byit-myth-executor/myth-exector-plugin/src/main/java/com/byit/utils/ScanRootPackage.java
0 → 100644
View file @
a7b4ef9d
package
com
.
byit
.
utils
;
import
com.byit.annotations.JobHandler
;
import
com.byit.job.handler.interfaces.IJobHandler
;
import
java.io.File
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
* @program: byit-myth-job->ScanRootPackage
* @description: 扫描项目
* @author: huangfu
* @date: 2019/11/19 17:31
**/
public
class
ScanRootPackage
{
public
ScanRootPackage
()
{
addJobCache
();
}
/**
* 任务基类
*/
private
static
final
Class
<
IJobHandler
>
JOB_ROOT_CLASS
;
/**
* 任务注解类
*/
private
static
final
Class
<
JobHandler
>
JOB_HANDLER_CLASS
;
static
{
JOB_ROOT_CLASS
=
IJobHandler
.
class
;
JOB_HANDLER_CLASS
=
JobHandler
.
class
;
}
/**
* 获取项目的根路径
* @return
*/
private
static
String
getProjectRootPath
(){
return
new
File
(
ScanRootPackage
.
class
.
getResource
(
"/"
).
getPath
()).
getPath
();
}
/**
* 获取任务类型的CLASS对象
* 根据是否是{@link IJobHandler}判断
* @return
*/
private
static
List
<
Class
>
getClassObjective
()
{
List
<
String
>
classFilePath
=
getClassFilePath
(
);
String
projectRootPath
=
getProjectRootPath
(
);
//获取全限定名
List
<
Class
>
collect
=
classFilePath
.
stream
(
)
.
map
(
filePth
->
{
try
{
//获取类全限定名
String
replace
=
filePth
.
replace
(
projectRootPath
+
File
.
separator
,
""
)
.
replace
(
File
.
separator
,
"."
)
.
replace
(
".class"
,
""
);
return
Class
.
forName
(
replace
);
}
catch
(
ClassNotFoundException
e
)
{
e
.
printStackTrace
(
);
}
return
null
;
}).
collect
(
Collectors
.
toList
(
));
/**
* 符合条件的类
*/
List
<
Class
>
meetTheCriteria
=
collect
.
stream
(
).
filter
(
objectiveClass
->{
if
(
JOB_ROOT_CLASS
.
isAssignableFrom
(
objectiveClass
))
{
if
(
objectiveClass
.
isAnnotationPresent
(
JOB_HANDLER_CLASS
)){
return
true
;
}
}
return
false
;
}).
collect
(
Collectors
.
toList
(
));
return
meetTheCriteria
;
}
/**
* 向缓存添加任务信息
*/
private
static
void
addJobCache
(){
getClassObjective
().
forEach
(
jobClass
->{
JobHandler
jobHandler
=
(
JobHandler
)
jobClass
.
getAnnotation
(
JobHandler
.
class
);
JobUtils
.
jobCache
.
put
(
jobHandler
.
value
(),
jobClass
);
});
}
/**
* 获取项目根路径下所有的类文件
* @return
*/
private
static
List
<
String
>
getClassFilePath
(){
ArrayList
<
String
>
classFileList
=
new
ArrayList
<>(
10
);
scan
(
getProjectRootPath
(),
classFileList
);
return
classFileList
;
}
/**
* 递归扫描
* @param rootPath
* @param list
*/
private
static
void
scan
(
String
rootPath
,
List
<
String
>
list
){
File
rootFile
=
new
File
(
rootPath
);
File
[]
files
=
rootFile
.
listFiles
(
);
for
(
File
file
:
files
)
{
if
(
file
.
isFile
()
&&
file
.
getName
().
endsWith
(
".class"
)){
list
.
add
(
file
.
getPath
());
}
else
if
(
file
.
isDirectory
()){
scan
(
file
.
getAbsolutePath
(),
list
);
}
}
}
}
byit-myth-executor/myth-exector/pom.xml
deleted
100644 → 0
View file @
1297cb2f
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<parent>
<artifactId>
byit-myth-executor
</artifactId>
<groupId>
myth-job
</groupId>
<version>
1.0-SNAPSHOT
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<groupId>
myth-job
</groupId>
<artifactId>
myth-exector
</artifactId>
</project>
\ No newline at end of file
byit-myth-executor/myth-executor-server/pom.xml
View file @
a7b4ef9d
...
...
@@ -28,7 +28,7 @@
<dependency>
<groupId>
myth-job
</groupId>
<artifactId>
myth-exector
</artifactId>
<artifactId>
myth-exector
-plugin
</artifactId>
<version>
${project.version}
</version>
</dependency>
...
...
byit-myth-executor/myth-executor-server/src/main/java/com/byit/conf/ExcecutorConfig.java
deleted
100644 → 0
View file @
1297cb2f
package
com
.
byit
.
conf
;
import
com.byit.job.executor.SpringExecutor
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
/**
* @program: byit-myth-job->ExcecutorConfig
* @description: TODO
* @author: huangfu
* @date: 2019/11/15 17:22
**/
@Configuration
public
class
ExcecutorConfig
{
@Bean
public
SpringExecutor
springExecutor
(){
return
new
SpringExecutor
();
}
}
byit-myth-executor/myth-executor-server/src/main/java/com/byit/conf/ExecutorRpcConfig.java
deleted
100644 → 0
View file @
1297cb2f
package
com
.
byit
.
conf
;
import
com.byit.rpc.registry.impl.RegistryServiceRegistry
;
import
com.byit.rpc.remoting.provider.impl.RpcSpringProviderFactory
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
java.util.HashMap
;
/**
* @program: byit-myth-job->RpcConfig
* @description: Rpc通讯的配置类
* @author: huangfu
* @date: 2019/11/14 15:18
**/
@Configuration
@Slf4j
public
class
ExecutorRpcConfig
{
@Value
(
"${myth-rpc.remoting.port}"
)
private
int
port
;
@Value
(
"${myth-rpc.registry.address}"
)
private
String
address
;
@Value
(
"${myth-rpc.registry.env}"
)
private
String
env
;
@Value
(
"${myth-rpc.registry.biz}"
)
private
String
biz
;
@Bean
public
RpcSpringProviderFactory
rpcSpringProviderFactory
(){
RpcSpringProviderFactory
providerFactory
=
new
RpcSpringProviderFactory
();
providerFactory
.
setPort
(
port
);
providerFactory
.
setServiceRegistryClass
(
RegistryServiceRegistry
.
class
);
providerFactory
.
setServiceRegistryParam
(
new
HashMap
<
String
,
String
>(){{
put
(
RegistryServiceRegistry
.
REGISTRY_ADDRESS
,
address
);
put
(
RegistryServiceRegistry
.
BIZ
,
biz
);
put
(
RegistryServiceRegistry
.
ENV
,
env
);
}});
log
.
info
(
">>>>>>>>>>>>>>> 执行器服务向注册中心注册成功"
);
return
providerFactory
;
}
}
byit-myth-executor/myth-executor-server/src/main/java/com/byit/executor/ExecutorServerImpl.java
deleted
100644 → 0
View file @
1297cb2f
package
com
.
byit
.
executor
;
import
com.byit.api.ExecutorServer
;
import
com.byit.job.handler.interfaces.IJobHandler
;
import
com.byit.job.model.ReturnResult
;
import
com.byit.rpc.remoting.provider.annotation.RpcService
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Service
;
/**
* @program: byit-myth-job->JavaBeanExcutor
* @description: 解释执行器
* @author: huangfu
* @date: 2019/11/14 11:16
**/
@RpcService
@Service
public
class
ExecutorServerImpl
implements
ExecutorServer
{
@Override
public
ReturnResult
<
String
>
execute
(
IJobHandler
iJobHandler
,
String
param
)
throws
Exception
{
return
iJobHandler
.
execute
(
param
);
}
}
byit-myth-executor/myth-executor-server/src/main/java/com/byit/service/DemoHandel.java
deleted
100644 → 0
View file @
1297cb2f
package
com
.
byit
.
service
;
import
com.byit.job.annotation.JobHandler
;
import
com.byit.job.handler.BaseJobHandler
;
import
com.byit.job.handler.interfaces.IJobHandler
;
import
com.byit.job.model.ReturnResult
;
import
org.springframework.stereotype.Component
;
/**
* @program: byit-myth-job->DemoHandel
* @description: huangfu
* @author: huangfu
* @date: 2019/11/15 17:52
**/
@JobHandler
(
"addJob"
)
@Component
public
class
DemoHandel
extends
BaseJobHandler
{
@Override
public
ReturnResult
<
String
>
execute
(
String
param
)
throws
Exception
{
System
.
out
.
println
(
"----------------"
+
param
+
"----------------------"
);
return
ReturnResult
.
SUCCESS
;
}
@Override
public
void
init
(
String
param
)
{
}
@Override
public
void
destroy
(
String
param
)
{
}
}
byit-myth-executor/pom.xml
View file @
a7b4ef9d
...
...
@@ -14,7 +14,7 @@
<modules>
<module>
myth-executor-api
</module>
<module>
myth-executor-server
</module>
<module>
myth-exector
</module>
<module>
myth-exector
-plugin
</module>
</modules>
...
...
demo-client/byit-demo-client/pom.xml
View file @
a7b4ef9d
...
...
@@ -31,6 +31,18 @@
<artifactId>
byit-demo-api
</artifactId>
<version>
${project.version}
</version>
</dependency>
<dependency>
<groupId>
myth-job
</groupId>
<artifactId>
myth-exector-plugin
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
fastjson
</artifactId>
<version>
1.2.62
</version>
</dependency>
</dependencies>
<build>
...
...
demo-client/byit-demo-client/src/main/java/com/byit/job/DemoJob.java
0 → 100644
View file @
a7b4ef9d
package
com
.
byit
.
job
;
import
com.byit.annotations.JobHandler
;
import
com.byit.job.handler.BaseJobHandler
;
import
com.byit.job.model.ReturnResult
;
/**
* @program: byit-myth-job->DemoJob
* @description: TODO
* @author: huangfu
* @date: 2019/11/20 12:40
**/
@JobHandler
(
"addJob"
)
public
class
DemoJob
extends
BaseJobHandler
{
@Override
public
ReturnResult
<
String
>
execute
(
String
s
)
throws
Exception
{
System
.
out
.
println
(
"------------------------------"
);
return
ReturnResult
.
SUCCESS
;
}
}
demo-client/byit-demo-client/src/main/java/com/byit/job/Mains.java
0 → 100644
View file @
a7b4ef9d
package
com
.
byit
.
job
;
import
com.alibaba.fastjson.JSON
;
import
com.byit.job.model.JavaBeanJobInfo
;
import
com.byit.utils.JobUtils
;
import
java.io.IOException
;
/**
* @program: byit-myth-job->Mains
* @description: TODO
* @author: huangfu
* @date: 2019/11/20 12:18
**/
public
class
Mains
{
public
static
void
main
(
String
[]
args
)
throws
IOException
{
String
plServerUrl
=
"http://localhost:9999"
;
String
mythCron
=
"时间"
;
String
routingStrategy
=
"路由策略"
;
String
blockingStrategy
=
"阻塞策略"
;
String
callbackToken
=
"dsasadsad"
;
String
gatewayToken
=
"asdsadsa"
;
String
requestUrl
=
"http://localhost:8080/job/addJob"
;
String
param
=
"sadsadsa"
;
String
name
=
"addJob"
;
JavaBeanJobInfo
javaBeanJobInfo
=
new
JavaBeanJobInfo
(
plServerUrl
,
requestUrl
,
param
,
routingStrategy
,
blockingStrategy
,
callbackToken
,
gatewayToken
);
javaBeanJobInfo
.
setJobHandelName
(
name
);
javaBeanJobInfo
.
setMythCron
(
mythCron
);
JobUtils
.
addJob
(
javaBeanJobInfo
);
JobUtils
.
jobServerStart
();
System
.
out
.
println
(
JobUtils
.
jobCache
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment