Commit 9db1c0f6 by huangfusuper

添加任务脚本解释执行器

parent f197e522
package com.byit.job.enums;
/**
* @author huangfu
*/
public enum GlueTypeEnum {
BEAN("BEAN", false, null, null),
GLUE_GROOVY("GLUE(Java)", false, null, null),
GLUE_SHELL("GLUE(Shell)", true, "bash", ".sh"),
GLUE_PYTHON("GLUE(Python)", true, "python", ".py"),
GLUE_PHP("GLUE(PHP)", true, "php", ".php"),
GLUE_NODEJS("GLUE(Nodejs)", true, "node", ".js"),
GLUE_POWERSHELL("GLUE(PowerShell)", true, "powershell", ".ps1");
private String desc;
private boolean isScript;
private String cmd;
private String suffix;
private GlueTypeEnum(String desc, boolean isScript, String cmd, String suffix) {
this.desc = desc;
this.isScript = isScript;
this.cmd = cmd;
this.suffix = suffix;
}
public String getDesc() {
return desc;
}
public boolean isScript() {
return isScript;
}
public String getCmd() {
return cmd;
}
public String getSuffix() {
return suffix;
}
public static GlueTypeEnum match(String name){
for (GlueTypeEnum item: GlueTypeEnum.values()) {
if (item.name().equals(name)) {
return item;
}
}
return null;
}
}
......@@ -6,7 +6,7 @@ import com.byit.job.model.ReturnResult;
/**
* @program: byit-myth-job->GlueJobHandler
* @description: 任务节点处理程序
* @description: JAVA任务节点处理程序
* @author: huangfu
* @date: 2019/11/13 16:23
**/
......
package com.byit.job.handler.impl;
import com.byit.job.enums.GlueTypeEnum;
import com.byit.job.handler.BaseJobHandler;
import com.byit.job.model.ReturnResult;
/**
* @program: byit-myth-job->ScriptJobHandler
* @description: 解析脚本的专用类
* @author: huangfu
* @date: 2019/11/14 14:46
**/
public class ScriptJobHandler extends BaseJobHandler {
private int jobId;
private String scriptSource;
private long scriptUpdateTime;
private GlueTypeEnum glueTypeEnum;
public ScriptJobHandler(int jobId, String scriptSource, long scriptUpdateTime, GlueTypeEnum glueTypeEnum) {
this.jobId = jobId;
this.scriptSource = scriptSource;
this.scriptUpdateTime = scriptUpdateTime;
this.glueTypeEnum = glueTypeEnum;
}
@Override
public ReturnResult<String> execute(String param) throws Exception {
System.out.println("-----------------------脚本执行-------------------");
return ReturnResult.SUCCESS;
}
}
package com.byit.api;
import com.byit.job.handler.impl.GlueJobHandler;
import com.byit.job.handler.interfaces.IJobHandler;
import com.byit.job.model.ReturnResult;
/**
* @program: byit-myth-job->JavaBeanExcutor
* @program: byit-myth-job->ExecutorServer
* @description: API外部调用接口
* @author: huangfu
* @date: 2019/11/13 16:52
**/
public interface JavaBeanExecutor {
public interface ExecutorServer {
/**
* 执行接口
* @param param
* @param iJobHandler 具体任务
* @param param 执行参数
* @return
*/
ReturnResult<String> execute(String param);
ReturnResult<String> execute(IJobHandler iJobHandler,String param) throws Exception;
}
......@@ -10,7 +10,27 @@
<modelVersion>4.0.0</modelVersion>
<groupId>myth-job</groupId>
<artifactId>myth-job-server</artifactId>
<artifactId>myth-executor-server</artifactId>
<dependencies>
<dependency>
<groupId>myth-job</groupId>
<artifactId>myth-executor-api</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>myth-job</groupId>
<artifactId>myth-executor-core</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>myth-job</groupId>
<artifactId>byit-myth-rpc</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>
\ No newline at end of file
package com.byit;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @program: byit-myth-job->ExecutorApplication
* @description: 执行器启动的启动入口
* @author: huangfu
* @date: 2019/11/14 16:03
**/
@SpringBootApplication
public class ExecutorApplication {
public static void main(String[] args) {
SpringApplication.run(ExecutorApplication.class,args);
}
}
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;
}
}
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);
}
}
# myth-rpc
myth-rpc:
remoting:
port: 7001
registry:
address: http://localhost:8080/myth-register
env: dev
biz: ${spring.application.name}
\ No newline at end of file
server:
port: 7000
spring:
profiles:
active: dev
application:
name: myth-job-server
logging:
config: classpath:logback.xml
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 引用现有配置 -->
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<!-- 控制台 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="CONSOLE" />
</root>
</configuration>
\ No newline at end of file
......@@ -14,14 +14,14 @@
<modules>
<module>myth-executor-api</module>
<module>myth-executor-client</module>
<module>myth-job-server</module>
<module>myth-executor-server</module>
</modules>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
......
......@@ -14,6 +14,7 @@
<module>byit-myth-core</module>
<module>byit-myth-executor</module>
<module>byit-myth-rpc</module>
<module>byit-myth-gateway</module>
</modules>
<parent>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment