一、xxl-job-admin

通过nginx为调度中心集群做负载均衡

①分别启动8001和8002端口的xxl-job-admin实例

②配置Nginx进行负载均衡,启动nginx

http {
       upstream yj{
	 server 192.168.124.129:8001;
         server 192.168.124.129:8002;
    }
    server{
        listen       8088;
 
        location / {
            proxy_pass  http://yj;
        }
    }
}

③成功后,我们可以通过nginx来访问xxl-job-admin集群了

http://192.168.124.129:8088/xxl-job-admin

XXL之整合SpringBoot

配置执行器和任务

XXL之整合SpringBoot

XXL之整合SpringBoot

路由策略置为轮询,cron表达式设置为每五秒调度一次

二 、执行器项目

新建执行器项目XXL-Task,pom.xml文件引入依赖,似乎存在与SpringBoot版本不兼容的情况,启动会报异常,此处采用的SpringBoot版本为1.5.18.RELEASE

<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>1.5.18.RELEASE</version>
	<relativePath />
</parent>

<dependency>
	<groupId>com.xuxueli</groupId>
	<artifactId>xxl-job-core</artifactId>
	<version>2.0.1</version>
</dependency>

application.properties文件

server.port=9001

#xxl-job调度中心工程的地址
xxl.job.admin.addresses=http://192.168.124.129:8088/xxl-job-admin 
#xxl-job executor
xxl.job.executor.appname=testAppName
xxl.job.executor.ip=
xxl.job.executor.port=9999
#xxl-job log path 
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
#xxl-job, access token 
xxl.job.accessToken=
#执行器Log文件定期清理功能,指定日志保存天数,日志文件过期自动删除。限制至少保持3天,否则功能不生效
xxl.job.executor.logretentiondays=-1

XxlJobConfig

package com.yj.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;

@Configuration
@ComponentScan(basePackages = "com.yj.handler")
public class XxlJobConfig {

	@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(initMethod = "start", destroyMethod = "destroy")
	public XxlJobSpringExecutor xxlJobExecutor() {
		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;
	}
}

MyJobHandler

package com.yj.handler;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.core.handler.annotation.JobHandler;
import com.xxl.job.core.log.XxlJobLogger;

@JobHandler(value = "myJobHandler")
@Component
public class MyJobHandler extends IJobHandler {
	
	private static final Logger log = LoggerFactory.getLogger(MyJobHandler.class);

	@Value("${server.port}")
	private String port;
	
	@Override
	public ReturnT<String> execute(String param) throws Exception {
		XxlJobLogger.log("Hello World,port:"+port);
		log.info("Hello World,port:"+port);
		return SUCCESS;
	}
}

分别启动server.port=9001,9002端口的执行器实例,其中,xxl.job.executor.port=9999,9998,xxl.job.executor.appname都为testAppName

启动后在xxl-job-admin控制台(有点类似Eureka)已经能看到注册成功的执行器实例了

XXL之整合SpringBoot

 查看执行器控制台日志,发现xxl-job-admin对9001和9002的XXL-Task项目进行了负载均衡的调度

15:00:53.254 logback [Thread-28] INFO  com.yj.handler.MyJobHandler - Hello World,port:9002
15:00:58.284 logback [Thread-16] INFO  com.yj.handler.MyJobHandler - Hello World,port:9001
15:01:03.261 logback [Thread-28] INFO  com.yj.handler.MyJobHandler - Hello World,port:9002

 

相关文章:

  • 2022-03-02
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-22
  • 2021-08-31
  • 2021-12-23
猜你喜欢
  • 2021-07-16
  • 2022-02-17
  • 2022-02-28
  • 2021-12-03
  • 2022-12-23
  • 2022-12-23
  • 2021-07-04
相关资源
相似解决方案