xuxueli / xxl-job

A distributed task scheduling framework.(分布式任务调度平台XXL-JOB)
http://www.xuxueli.com/xxl-job/
GNU General Public License v3.0
27.46k stars 10.86k forks source link

无法正常注册到调度中心 #1117

Closed luodianhanxuan closed 4 years ago

luodianhanxuan commented 5 years ago

Which version of XXL-JOB do you using?

2.1.0

Expected behavior

spring boot 按照文档配置项目正常注册到调度中心

Actual behavior

当 spring boot 项目的配置文件是 application.yml 时,客户端日志显示注册成功,但是在调度中心界面显示注册的 executor 数量为 0 ,但是当 application.yml 换成 application.properties ,能够正常注册。

Steps to reproduce the behavior

- application.yml
```yaml
xxl:
  job:
    admin:
      addresses: http://127.0.0.1:9090
    executor:
      appname: demo
      port: 9999

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

/**

// @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() {
    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;
}

}

- DemoJobHandler.java
```java
package com.example.test.service.jobhandler;

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;
import org.springframework.stereotype.Component;

import java.util.concurrent.TimeUnit;

/**
 * 任务Handler示例(Bean模式)
 *
 * 开发步骤:
 * 1、继承"IJobHandler":“com.xxl.job.core.handler.IJobHandler”;
 * 2、注册到Spring容器:添加“@Component”注解,被Spring容器扫描为Bean实例;
 * 3、注册到执行器工厂:添加“@JobHandler(value="自定义jobhandler名称")”注解,注解value值对应的是调度中心新建任务的JobHandler属性的值。
 * 4、执行日志:需要通过 "XxlJobLogger.log" 打印执行日志;
 *
 * @author xuxueli 2015-12-19 19:43:36
 */
@JobHandler(value="demoJobHandler")
@Component
public class DemoJobHandler extends IJobHandler {

    @Override
    public ReturnT<String> execute(String param) throws Exception {
        XxlJobLogger.log("XXL-JOB, Hello World.");

        for (int i = 0; i < 5; i++) {
            XxlJobLogger.log("beat at:" + i);
            TimeUnit.SECONDS.sleep(2);
        }
        return SUCCESS;
    }

}

import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication public class TestApplication {

public static void main(String[] args) {
    SpringApplication.run(TestApplication.class, args);
}

}


- logs
```text

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::       (v1.5.21.RELEASE)

2019-09-03 09:37:15.606  INFO 11961 --- [           main] com.example.test.TestApplication         : Starting TestApplication on localhost with PID 11961 (/Users/wangjg/Desktop/test/target/classes started by wangjg in /Users/wangjg/Desktop/test)
2019-09-03 09:37:15.610  INFO 11961 --- [           main] com.example.test.TestApplication         : No active profile set, falling back to default profiles: default
2019-09-03 09:37:15.904  INFO 11961 --- [           main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4ea5b703: startup date [Tue Sep 03 09:37:15 CST 2019]; root of context hierarchy
2019-09-03 09:37:17.265  INFO 11961 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http)
2019-09-03 09:37:17.301  INFO 11961 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2019-09-03 09:37:17.301  INFO 11961 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/8.5.40
2019-09-03 09:37:17.400  INFO 11961 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2019-09-03 09:37:17.400  INFO 11961 --- [ost-startStop-1] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1496 ms
2019-09-03 09:37:17.558  INFO 11961 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean  : Mapping servlet: 'dispatcherServlet' to [/]
2019-09-03 09:37:17.564  INFO 11961 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'characterEncodingFilter' to: [/*]
2019-09-03 09:37:17.564  INFO 11961 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2019-09-03 09:37:17.565  INFO 11961 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'httpPutFormContentFilter' to: [/*]
2019-09-03 09:37:17.565  INFO 11961 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'requestContextFilter' to: [/*]
2019-09-03 09:37:17.624  INFO 11961 --- [           main] c.example.test.core.config.XxlJobConfig  : >>>>>>>>>>> xxl-job config init.
2019-09-03 09:37:17.638  INFO 11961 --- [           main] c.xxl.job.core.executor.XxlJobExecutor   : >>>>>>>>>>> xxl-job register jobhandler success, name:commandJobHandler, jobHandler:com.example.test.service.jobhandler.CommandJobHandler@6ec65b5e
2019-09-03 09:37:17.640  INFO 11961 --- [           main] c.xxl.job.core.executor.XxlJobExecutor   : >>>>>>>>>>> xxl-job register jobhandler success, name:demoJobHandler, jobHandler:com.example.test.service.jobhandler.DemoJobHandler@263bbfeb
2019-09-03 09:37:17.640  INFO 11961 --- [           main] c.xxl.job.core.executor.XxlJobExecutor   : >>>>>>>>>>> xxl-job register jobhandler success, name:httpJobHandler, jobHandler:com.example.test.service.jobhandler.HttpJobHandler@31edeac
2019-09-03 09:37:17.640  INFO 11961 --- [           main] c.xxl.job.core.executor.XxlJobExecutor   : >>>>>>>>>>> xxl-job register jobhandler success, name:shardingJobHandler, jobHandler:com.example.test.service.jobhandler.ShardingJobHandler@67d86804
2019-09-03 09:37:17.668  INFO 11961 --- [           main] c.x.r.r.provider.XxlRpcProviderFactory   : >>>>>>>>>>> xxl-rpc, provider factory add service success. serviceKey = com.xxl.job.core.biz.ExecutorBiz, serviceBean = class com.xxl.job.core.biz.impl.ExecutorBizImpl
2019-09-03 09:37:17.924  INFO 11961 --- [       Thread-8] com.xxl.rpc.remoting.net.Server          : >>>>>>>>>>> xxl-rpc remoting server start success, nettype = com.xxl.rpc.remoting.net.impl.netty_http.server.NettyHttpServer, port = 9999
2019-09-03 09:37:18.103  INFO 11961 --- [           main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4ea5b703: startup date [Tue Sep 03 09:37:15 CST 2019]; root of context hierarchy
2019-09-03 09:37:18.189  INFO 11961 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2019-09-03 09:37:18.190  INFO 11961 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2019-09-03 09:37:18.230  INFO 11961 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2019-09-03 09:37:18.230  INFO 11961 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2019-09-03 09:37:18.274  INFO 11961 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2019-09-03 09:37:18.557  INFO 11961 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
2019-09-03 09:37:18.586  INFO 11961 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2019-09-03 09:37:18.592  INFO 11961 --- [           main] com.example.test.TestApplication         : Started TestApplication in 3.405 seconds (JVM running for 4.243)

image

Other information

当用 此环境启动 客户端时,在配置类,可以正常读取到 application.yml 中的配置,并将配置信息正确配置到 XxlJobSpringExecutor 对象中,但是无法正常注册,但是如果把 application.yml 改为 application.properties 时,就可以正常注册

xxl.job.admin.addresses=http://127.0.
0.1:9090
xxl.job.executor.appname=xxl-job-executor-sample
xxl.job.executor.port=9999

总之,很奇怪,望帮忙解答一下。。。

xuxueli commented 4 years ago

你好,可以debug看下相关配置有没有正确加载。