源码和教程
实战
部署任务调度中心
jar部署
参考中文教程即可部署
docker部署
部署任务调度中心和Mysql(使用docker-compose)
version: '3'
services:
mysql-xxljob:
image: mysql
container_name: mysql-xxljob
ports:
- 3306:3306
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: '123456'
command:
--default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
--max_allowed_packet=128M
volumes:
- mysql-data:/var/lib/mysql
- mysql-logs:/var/log/mysql
- mysql-conf:/etc/mysql
networks:
- mysql_network
xxl-job:
image: xuxueli/xxl-job-admin:2.1.0
container_name: xxl-job
depends_on:
- mysql-xxljob
volumes:
- /usr/local/docker/xxljob/applogs:/data/applogs
- /usr/local/docker/xxljob/application.propertie:/application.propertie
ports:
- 80:8080
environment:
TZ: Asia/Shanghai
PARAMS: '--spring.config.location=/application.propertie'
networks:
- xxl-job
networks:
mysql_network:
xxl-job:
volumes:
mysql-data:
mysql-logs:
mysql-conf:
导入sql脚本(教程中有)
PARAMS设置容器加载配置文件
### web
server.port=8080
server.context-path=/xxl-job-admin
### actuator
management.context-path=/actuator
management.health.mail.enabled=false
### resources
spring.mvc.static-path-pattern=/static/**
spring.resources.static-locations=classpath:/static/
### freemarker
spring.freemarker.templateLoaderPath=classpath:/templates/
spring.freemarker.suffix=.ftl
spring.freemarker.charset=UTF-8
spring.freemarker.request-context-attribute=request
spring.freemarker.settings.number_format=0.##########
### mybatis
mybatis.mapper-locations=classpath:/mybatis-mapper/*Mapper.xml
### xxl-job, datasource
spring.datasource.url=jdbc:mysql://192.168.1.130:3306/xxl_job?Unicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource
spring.datasource.tomcat.max-wait=10000
spring.datasource.tomcat.max-active=30
spring.datasource.tomcat.test-on-borrow=true
spring.datasource.tomcat.validation-query=SELECT 1
spring.datasource.tomcat.validation-interval=30000
### xxl-job email
spring.mail.host=smtp.qq.com
spring.mail.port=25
spring.mail.username=xxx@qq.com
spring.mail.password=xxx
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
### xxl-job, access token
xxl.job.accessToken=
### xxl-job, i18n (default empty as chinese, "en" as english)
xxl.job.i18n=
## xxl-job, triggerpool max size
xxl.job.triggerpool.fast.max=200
xxl.job.triggerpool.slow.max=100
### xxl-job, log retention days
xxl.job.logretentiondays=30
配置执行器项目
1. 配置pom文件,增加xxl-job-core依赖
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.1.0</version>
</dependency>
2. 修改application.yml文件
server:
port: 8081
xxl:
job:
admin:
addresses: http://192.168.1.130/xxl-job-admin
executor:
appname: xxl-job-executor-sample
ip:
port: 9999
logretentiondays: 30
logpath:
accessToken:
3. XxlJobConfig配置类
@Configuration
public class XxlJobConfig {
private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);
@Value("${xxl.job.admin.addresses}")
private String adminAddresses;
@Value("${xxl.job.executor.appname}")
private String appName;
@Value("${xxl.job.executor.ip}")
private String ip;
@Value("${xxl.job.executor.port}")
private int port;
@Value("${xxl.job.accessToken}")
private String accessToken;
@Value("${xxl.job.executor.logpath}")
private String logPath;
@Value("${xxl.job.executor.logretentiondays}")
private int logRetentionDays;
@Bean
public XxlJobSpringExecutor xxlJobExecutor() {
logger.info(">>>>>>>>>>> xxl-job config init.");
XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
xxlJobSpringExecutor.setAppName(appName);
xxlJobSpringExecutor.setIp(ip);
xxlJobSpringExecutor.setPort(port);
xxlJobSpringExecutor.setAccessToken(accessToken);
xxlJobSpringExecutor.setLogPath(logPath);
xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
return xxlJobSpringExecutor;
}
}
4. 任务类HelloHandler
/**
* @author wzh
* @date 2019/12/9 - 16:13
* 开发步骤:
* 继承"IJobHandler":“com.xxl.job.core.handler.IJobHandler”;
* 注册到Spring容器:添加“@Component”注解,被Spring容器扫描为Bean实例;
* 注册到执行器工厂:添加“@JobHandler(value="自定义jobhandler名称")”注解,注解value值对应的是调度中心新建任务的JobHandler属性的值。
* 执行日志:需要通过 "XxlJobLogger.log" 打印执行日志;
*/
@JobHandler(value = "helloHandler")
@Component
public class HelloHandler extends IJobHandler {
@Override
public ReturnT<String> execute(String s) throws Exception {
XxlJobLogger.log("Hello Handler is deal");
Thread.sleep(1000);
return ReturnT.SUCCESS;
}
}
遇见的问题
1. 执行器启动报错
2. 执行器不能注册进任务中心
最后使用了制作镜像+xxl-job-core的2.1.2-SNAPSHOT版解决(拉取时拉的快照版..)
制作镜像
Dockerfile
FROM openjdk:8-jre
MAINTAINER xuxueli
ENV PARAMS=""
ENV TZ=PRC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
ADD xxl-job-admin-*.jar /app.jar
ENTRYPOINT ["sh","-c","java -jar /app.jar $PARAMS"]
来源:CSDN
作者:随便OCE
链接:https://blog.csdn.net/qq_43026811/article/details/103344756