- 安装node,建议安装5.7版本以上
- 安装前端依赖项,切换到src/frontend目录下执行npm install
- 初始化数据库(mysql),如需要使用其它数据库,按照此脚本调整成相应数据库言及修改部分mybaits配置.初始化语句在src/db下
- 在job-center-server上执行gradle prod war进行打包或交给jenkins自动处理
public class HelloJob implements IJob
{
@Override
public JobResponse exec(JobRequest request)
{
System.out.println("收到任务请求:"+ JSON.toJSONString(request));
JobResponse response = new JobResponse(request.getId(),2,"执行成功");
return response;
}
}
- 配置任务节点注册
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<context:property-placeholder location="WEB-INF/config.properties"/>
<bean id="serviceRegister" class="com.nxin.framework.core.ZkServiceRegister" init-method="startUp" destroy-method="shutDown" p:namespace="job-center" p:servers="${dubbo.address}"/>
<bean id="codec" class="com.nxin.framework.codec.KryoCodec" init-method="startUp">
<property name="clss">
<list value-type="java.lang.String">
<value>com.nxin.framework.message.JobResponse</value>
</list>
</property>
</bean>
<bean class="com.nxin.framework.client.RpcJobWorker" init-method="startUp" destroy-method="shutDown">
<property name="jobWorker">
<bean class="com.nxin.framework.client.JobWorker" init-method="startUp" destroy-method="shutDown" p:bufferSize="4" p:serviceRegister-ref="serviceRegister" p:port="${rpc.port}">
<property name="waitStrategy">
<bean class="com.lmax.disruptor.BlockingWaitStrategy"/>
</property>
<property name="rpcHelper">
<bean class="com.nxin.framework.core.JobMessageRpcHelper" init-method="startUp" destroy-method="shutDown" p:codec-ref="codec"/>
</property>
<property name="handlerMap">
<map key-type="java.lang.String" value-type="com.nxin.framework.client.IJob">
<entry key="helloJob">
<bean class="com.nxin.ferameowrk.web.core.HelloJob"/>
</entry>
</map>
</property>
</bean>
</property>
</bean>
</beans>
-
实现一个响应任务请求的web服务,建议收到请求后将任务请求插入队列,返回一个正常状态码。任务服务器会以post方式向该地址提交以下参数:
参数名 说明 用途 id 任务条目ID 回送任务执行状态 name 任务名称 客户端执行哪个任务 sharding 是否分片 0(不分片),1(分片) shardingItems 分片信息 节点获取的分片列表 extra 附加信息 附加字段,任务热配置 -
处理任务后进行状态回送,http post请求/home/reportJob,参数如下:
参数名 说明 用途 id 任务条目ID 回送任务执行状态 state 任务状态 任务执行状态 error 错误消息 异常信息记录
项目设计思路参考当当elastic-job https://github.com/dangdangdotcom/elastic-job