springboot整合任务调度中心(xxljob)之异常BindException

异常

启动项目后抛出异常,但是奇怪的是执行器在任务调度中心中注册成功,也能成功执行

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.4.2)

2021-02-22 15:23:15.512  INFO 12324 --- [  restartedMain] c.q.f.FrmsApplication                    : Starting FrmsApplication using Java 1.8.0_121 on DESKTOP-LG8O11G with PID 12324 (F:\_design\frms\target\classes started by 56509 in F:\_design\frms)
2021-02-22 15:23:15.576  INFO 12324 --- [  restartedMain] c.q.f.FrmsApplication                    : No active profile set, falling back to default profiles: default
2021-02-22 15:23:15.829  INFO 12324 --- [  restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable
2021-02-22 15:23:15.829  INFO 12324 --- [  restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG'
2021-02-22 15:23:17.883  INFO 12324 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2021-02-22 15:23:17.902  INFO 12324 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 8 ms. Found 0 JPA repository interfaces.
2021-02-22 15:23:18.519  INFO 12324 --- [  restartedMain] o.s.b.w.e.t.TomcatWebServer              : Tomcat initialized with port(s): 8088 (http)
2021-02-22 15:23:18.529  INFO 12324 --- [  restartedMain] o.a.c.c.StandardService                  : Starting service [Tomcat]
2021-02-22 15:23:18.530  INFO 12324 --- [  restartedMain] o.a.c.c.StandardEngine                   : Starting Servlet engine: [Apache Tomcat/9.0.41]
2021-02-22 15:23:18.532  INFO 12324 --- [  restartedMain] o.a.c.c.AprLifecycleListener             : Loaded Apache Tomcat Native library [1.2.25] using APR version [1.7.0].
2021-02-22 15:23:18.532  INFO 12324 --- [  restartedMain] o.a.c.c.AprLifecycleListener             : APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
2021-02-22 15:23:18.532  INFO 12324 --- [  restartedMain] o.a.c.c.AprLifecycleListener             : APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
2021-02-22 15:23:18.536  INFO 12324 --- [  restartedMain] o.a.c.c.AprLifecycleListener             : OpenSSL successfully initialized [OpenSSL 1.1.1g  21 Apr 2020]
2021-02-22 15:23:18.690  INFO 12324 --- [  restartedMain] o.a.c.c.C.[.[.[/]                        : Initializing Spring embedded WebApplicationContext
2021-02-22 15:23:18.690  INFO 12324 --- [  restartedMain] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 2860 ms
2021-02-22 15:23:18.870  INFO 12324 --- [  restartedMain] o.h.j.i.u.LogHelper                      : HHH000204: Processing PersistenceUnitInfo [name: default]
2021-02-22 15:23:18.921  INFO 12324 --- [  restartedMain] o.h.Version                              : HHH000412: Hibernate ORM core version 5.4.27.Final
2021-02-22 15:23:19.056  INFO 12324 --- [  restartedMain] o.h.a.c.Version                          : HCANN000001: Hibernate Commons Annotations {5.1.2.Final}
2021-02-22 15:23:19.165  INFO 12324 --- [  restartedMain] c.z.h.HikariDataSource                   : HikariPool-1 - Starting...
2021-02-22 15:23:19.250  INFO 12324 --- [  restartedMain] c.z.h.p.PoolBase                         : HikariPool-1 - Driver does not support get/set network timeout for connections. (oracle.jdbc.driver.T4CConnection.getNetworkTimeout()I)
2021-02-22 15:23:19.254  INFO 12324 --- [  restartedMain] c.z.h.HikariDataSource                   : HikariPool-1 - Start completed.
2021-02-22 15:23:19.275  INFO 12324 --- [  restartedMain] o.h.d.Dialect                            : HHH000400: Using dialect: org.hibernate.dialect.Oracle10gDialect
2021-02-22 15:23:19.627  INFO 12324 --- [  restartedMain] o.h.e.t.j.p.i.JtaPlatformInitiator       : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2021-02-22 15:23:19.639  INFO 12324 --- [  restartedMain] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2021-02-22 15:23:19.660  INFO 12324 --- [  restartedMain] o.s.b.d.a.OptionalLiveReloadServer       : LiveReload server is running on port 35729
2021-02-22 15:23:19.869  WARN 12324 --- [  restartedMain] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
2021-02-22 15:23:20.019  INFO 12324 --- [  restartedMain] pertySourcedRequestMappingHandlerMapping : Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2Controller#getDocumentation(String, HttpServletRequest)]
2021-02-22 15:23:20.037  INFO 12324 --- [  restartedMain] c.q.f.u.XxlJobConfig                     : >>>>> xxl-job config init.
2021-02-22 15:23:20.042  INFO 12324 --- [  restartedMain] c.x.j.c.e.XxlJobExecutor                 : >>>>>>>>>>> xxl-job register jobhandler success, name:commandJobHandler, jobHandler:com.qiong.frms.executor.CommandJobHandler@4b4b762d
2021-02-22 15:23:20.043  INFO 12324 --- [  restartedMain] c.x.j.c.e.XxlJobExecutor                 : >>>>>>>>>>> xxl-job register jobhandler success, name:demo2Handler, jobHandler:com.qiong.frms.executor.Demo2Handler@7e51403b
2021-02-22 15:23:20.043  INFO 12324 --- [  restartedMain] c.x.j.c.e.XxlJobExecutor                 : >>>>>>>>>>> xxl-job register jobhandler success, name:httpJobHandler, jobHandler:com.qiong.frms.executor.HttpJobHandler@d010146
2021-02-22 15:23:20.043  INFO 12324 --- [  restartedMain] c.x.j.c.e.XxlJobExecutor                 : >>>>>>>>>>> xxl-job register jobhandler success, name:shardingJobHandler, jobHandler:com.qiong.frms.executor.ShardingJobHandler@1debf4d5
2021-02-22 15:23:20.089  INFO 12324 --- [  restartedMain] c.x.r.r.p.XxlRpcProviderFactory          : >>>>>>>>>>> xxl-rpc, provider factory add service success. serviceKey = com.xxl.job.core.biz.ExecutorBiz, serviceBean = class com.xxl.job.core.biz.impl.ExecutorBizImpl
2021-02-22 15:23:20.093  INFO 12324 --- [  restartedMain] c.x.r.r.p.XxlRpcProviderFactory          : >>>>>>>>>>> xxl-rpc, provider factory add service success. serviceKey = com.xxl.job.core.biz.ExecutorBiz, serviceBean = class com.xxl.job.core.biz.impl.ExecutorBizImpl
2021-02-22 15:23:20.213  INFO 12324 --- [  restartedMain] o.s.s.c.ThreadPoolTaskExecutor           : Initializing ExecutorService 'applicationTaskExecutor'
2021-02-22 15:23:20.252  INFO 12324 --- [  restartedMain] o.s.b.a.w.s.WelcomePageHandlerMapping    : Adding welcome page: class path resource [static/index.html]
2021-02-22 15:23:20.349  INFO 12324 --- [  restartedMain] o.s.s.c.ThreadPoolTaskScheduler          : Initializing ExecutorService 'taskScheduler'
2021-02-22 15:23:20.396  INFO 12324 --- [  restartedMain] o.s.b.w.e.t.TomcatWebServer              : Tomcat started on port(s): 8088 (http) with context path ''
2021-02-22 15:23:20.397  INFO 12324 --- [  restartedMain] d.s.w.p.DocumentationPluginsBootstrapper : Context refreshed
2021-02-22 15:23:20.413  INFO 12324 --- [  restartedMain] d.s.w.p.DocumentationPluginsBootstrapper : Found 1 custom documentation plugin(s)
2021-02-22 15:23:20.449  INFO 12324 --- [  restartedMain] s.d.s.w.s.ApiListingReferenceScanner     : Scanning for api listing references
2021-02-22 15:23:20.566  INFO 12324 --- [  restartedMain] c.q.f.FrmsApplication                    : Started FrmsApplication in 5.697 seconds (JVM running for 7.483)
2021-02-22 15:23:21.300  INFO 12324 --- [      Thread-21] c.x.r.r.n.Server                         : >>>>>>>>>>> xxl-rpc remoting server start success, nettype = com.xxl.rpc.remoting.net.impl.netty_http.server.NettyHttpServer, port = 9999
Exception in thread "Thread-25" java.net.BindException: Address already in use: bind
	at sun.nio.ch.Net.bind0(Native Method)
	at sun.nio.ch.Net.bind(Net.java:433)
	at sun.nio.ch.Net.bind(Net.java:425)
	at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
	at io.netty.channel.socket.nio.NioServerSocketChannel.doBind(NioServerSocketChannel.java:134)
	at io.netty.channel.AbstractChannel$AbstractUnsafe.bind(AbstractChannel.java:550)
	at io.netty.channel.DefaultChannelPipeline$HeadContext.bind(DefaultChannelPipeline.java:1334)
	at io.netty.channel.AbstractChannelHandlerContext.invokeBind(AbstractChannelHandlerContext.java:506)
	at io.netty.channel.AbstractChannelHandlerContext.bind(AbstractChannelHandlerContext.java:491)
	at io.netty.channel.DefaultChannelPipeline.bind(DefaultChannelPipeline.java:973)
	at io.netty.channel.AbstractChannel.bind(AbstractChannel.java:248)
	at io.netty.bootstrap.AbstractBootstrap$2.run(AbstractBootstrap.java:356)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:164)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	at java.lang.Thread.run(Thread.java:745)
2021-02-22 15:23:57.277  INFO 12324 --- [rPool-725822221] c.x.j.c.e.XxlJobExecutor                 : >>>>>>>>>>> xxl-job regist JobThread success, jobId:6, handler:com.qiong.frms.executor.Demo2Handler@7e51403b
Demo2:接受参数
费用管理

配置

代码部分:

Demo2Handler.java:

package com.qiong.frms.executor;

import com.qiong.frms.service.DemoService;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.core.handler.annotation.JobHandler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.servlet.http.HttpServletResponse;

/**
 * @author: zhoubq
 * @create: 2021-02-22 14:23
 * @programs: demo2执行器
 * @description: 访问地址:
 */
@JobHandler(value = "demo2Handler")
@Component
public class Demo2Handler extends IJobHandler {
    @Autowired
    DemoService demoService;

    @Override
    public ReturnT<String> execute(String param) throws Exception {
        return new ReturnT<String>(HttpServletResponse.SC_OK, demoService.getData());
    }
}

XxlJobConfig.java:

package com.qiong.frms.utils;

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;
/**
 * @author: zhoubq
 * @create: 2021-02-22 9:51
 * @description: xxljob配置,如果没有这个文件,将无法识别application.properties文件中的addresses,appname,port等值
 */
@Configuration
public class XxlJobConfig {
    private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);

    @Value("${xxl.job.admin.addresses}")
    private String adminAddresses;

    @Value("${xxl.job.accessToken}")
    private String accessToken;

    @Value("${xxl.job.executor.appname}")
    private String appname;

//    @Value("${xxl.job.executor.address}")
//    private String address;

    @Value("${xxl.job.executor.ip}")
    private String ip;

    @Value("${xxl.job.executor.port}")
    private int port;

    @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.setAddress(address);
        xxlJobSpringExecutor.setIp(ip);
        xxlJobSpringExecutor.setPort(port);
        xxlJobSpringExecutor.setAccessToken(accessToken);
        xxlJobSpringExecutor.setLogPath(logPath);
        xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);

        return xxlJobSpringExecutor;
    }

配置文件部分

application.properties:

### 调度中心部署地址:http://127.0.0.1:端口号/xxl-job-admin,需要填入给任务调度中心配置的端口号
xxl.job.admin.addresses=http://127.0.0.1:8081/xxl-job-admin
### xxl-job, access token
xxl.job.accessToken=
### 执行器appname:执行器心跳注册分组依据,为空则关闭自动注册
xxl.job.executor.appname=xxl-job-executor-demo2Handler
### xxl-job executor registry-address 执行器注册:优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。
#xxl.job.executor.address=http://127.0.0.1:8078/
### [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP
xxl.job.executor.ip=
### 执行器端口号:小于等于0则自动获取;默认端口为9999;
xxl.job.executor.port=9999
### 执行器运行日志文件存储磁盘路径:需要对该路径拥有读写权限;为空则使用默认路径;
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
### 执行器日志文件保存天数: 过期日志自动清理;
xxl.job.executor.logretentiondays=30 

配置完成后先启动XxlJob再启动项目:注册成功信息

[springfox.documentation.swagger2.web.Swagger2Controller#getDocumentation(String, HttpServletRequest)]
2021-02-23 10:38:49.609  INFO 12328 --- [  restartedMain] c.q.f.u.XxlJobConfig                     : >>>>> xxl-job config init.
2021-02-23 10:38:49.614  INFO 12328 --- [  restartedMain] c.x.j.c.e.XxlJobExecutor                 : >>>>>>>>>>> xxl-job register jobhandler success, name:commandJobHandler, jobHandler:com.qiong.frms.executor.CommandJobHandler@fb5ac58
2021-02-23 10:38:49.614  INFO 12328 --- [  restartedMain] c.x.j.c.e.XxlJobExecutor                 : >>>>>>>>>>> xxl-job register jobhandler success, name:demo2Handler, jobHandler:com.qiong.frms.executor.Demo2Handler@254b152d
2021-02-23 10:38:49.614  INFO 12328 --- [  restartedMain] c.x.j.c.e.XxlJobExecutor                 : >>>>>>>>>>> xxl-job register jobhandler success, name:httpJobHandler, jobHandler:com.qiong.frms.executor.HttpJobHandler@5ec2cc18
2021-02-23 10:38:49.614  INFO 12328 --- [  restartedMain] c.x.j.c.e.XxlJobExecutor                 : >>>>>>>>>>> xxl-job register jobhandler success, name:shardingJobHandler, jobHandler:com.qiong.frms.executor.ShardingJobHandler@7cb76cf4
2021-02-23 10:38:49.644  INFO 12328 --- [  restartedMain] c.x.r.r.p.XxlRpcProviderFactory          : >>>>>>>>>>> xxl-rpc, provider factory add service success. serviceKey = com.xxl.job.core.biz.ExecutorBiz, serviceBean = class com.xxl.job.core.biz.impl.ExecutorBizImpl
2021-02-23 10:38:49.815  INFO 12328 --- [  restartedMain] o.s.s.c.ThreadPoolTaskExecutor           : Initializing ExecutorService 'applicationTaskExecutor'
2021-02-23 10:38:49.867  INFO 12328 --- [  restartedMain] o.s.b.a.w.s.WelcomePageHandlerMapping    : Adding welcome page: class path resource [static/index.html]
2021-02-23 10:38:49.989  INFO 12328 --- [  restartedMain] o.s.s.c.ThreadPoolTaskScheduler          : Initializing ExecutorService 'taskScheduler'
2021-02-23 10:38:50.039  INFO 12328 --- [  restartedMain] o.s.b.w.e.t.TomcatWebServer              : Tomcat started on port(s): 8088 (http) with context path ''
2021-02-23 10:38:50.041  INFO 12328 --- [  restartedMain] d.s.w.p.DocumentationPluginsBootstrapper : Context refreshed
2021-02-23 10:38:50.059  INFO 12328 --- [  restartedMain] d.s.w.p.DocumentationPluginsBootstrapper : Found 1 custom documentation plugin(s)
2021-02-23 10:38:50.099  INFO 12328 --- [  restartedMain] s.d.s.w.s.ApiListingReferenceScanner     : Scanning for api listing references
2021-02-23 10:38:50.280  INFO 12328 --- [  restartedMain] c.q.FrmsApplication                      : Started FrmsApplication in 5.795 seconds (JVM running for 8.22)
2021-02-23 10:38:50.968  INFO 12328 --- [      Thread-22] c.x.r.r.n.Server                         : >>>>>>>>>>> xxl-rpc remoting server start success, nettype = com.xxl.rpc.remoting.net.impl.netty_http.server.NettyHttpServer, port = 9999

显示在任务调度中心注册成功——启动项目后数据表中会有注册信息
数据库表xxl_job_registry
访问地址(配置文件中的xxl.job.admin.addresses):
http://127.0.0.1:8081/xxl-job-admin

在任务调度中心新增执行器
新增执行器重新注册
添加成功后会出现OnLine 机器地址
在这里插入图片描述
添加任务-JobHandler必须与你项目中的注解中一致
如@JobHandler(value = “demo2Handler”)
Cron指定00
添加任务
选择任务执行一次,执行成功:

2021-02-23 09:39:07.342  INFO 13500 --- [Pool-1077181959] c.x.j.c.e.XxlJobExecutor                 : >>>>>>>>>>> xxl-job regist JobThread success, jobId:7, handler:com.qiong.frms.executor.Demo2Handler@abaa59
任务调度成功
2021-02-23 09:40:40.367  INFO 13500 --- [      Thread-29] c.x.j.c.t.JobThread                      : >>>>>>>>>>> xxl-job JobThread stoped, hashCode:Thread[Thread-29,10,main]

解决

XxlJobConfig文件中xxlJobExecutor方法注解里方法值删除

//原注解:
@Bean(initMethod = "start", destroyMethod = "destroy")
public XxlJobSpringExecutor xxlJobExecutor() {
	...
	}
	
//修改后注解
@Bean
public XxlJobSpringExecutor xxlJobExecutor() {
	...
	}

猜想:是因为没有写start和destroy方法,将注解里的值删掉即可

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值