XXL-JOB执行任务的SpringBoot程序无法注册到调度中心

news2024/11/22 13:50:40

文章目录

  • 1. 问题呈现
  • 2. 问题产生的原因
    • 2.1 原因一:执行器和调度中心部署在不同的机器上
    • 2.2 原因二:调度中心部署在云服务器上
  • 3. 解决方法
    • 3.1 方法一:将执行器和调度中心部署在同一台机器上
    • 3.2 方法二:手动指定执行器的ip地址(执行器和调度中心需要在同一网络环境下)
    • 3.3 方法三:内网穿透(通用方法)
      • 3.3.1 创建隧道
      • 3.3.2 获取公网地址
      • 3.3.3 设置执行器的地址

阅读本文前可以先阅读以下文章:

  • XXL-JOB快速入门(什么是XXL-JOB、部署XXL-JOB、在SpringBoot项目中接入XXL-JOB、XXL-JOB中的核心概念、集群环境下任务的路由策略)

1. 问题呈现

在调度中心查看调度日志

在这里插入图片描述

任务执行失败的原因如下

在这里插入图片描述

任务触发类型:Cron触发
调度机器:172.17.0.4
执行器-注册方式:自动注册
执行器-地址列表:[http://localhost:11015/, http://localhost:11016/]
路由策略:轮询
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0

>>>>>>>>>>>触发调度<<<<<<<<<<<
触发调度:
address:http://localhost:11016/
code:500
msg:xxl-job remoting error(Connection refused (Connection refused)), for url : http://localhost:11016/run


如果你是通过 docker 部署 XXL-JOB 的调度中心的,通过 docker 的日志也能查看到错误信息

sudo docker ps --format '{{.Names}}'
sudo docker logs --tail xxl-job-admin 

在这里插入图片描述

在这里插入图片描述

ubuntu@VM-0-5-ubuntu:~$ sudo docker logs --tail 30 xxl-job-admin
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:750)
02:46:47.714 logback [xxl-job, admin JobTriggerPoolHelper-slowTriggerPool-1343446290] ERROR c.x.job.core.util.XxlJobRemotingUtil - Connection refused (Connection refused)
java.net.ConnectException: Connection refused (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:607)
at sun.net.NetworkClient.doConnect(NetworkClient.java:175)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:463)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:558)
at sun.net.www.http.HttpClient.(HttpClient.java:242)
at sun.net.www.http.HttpClient.New(HttpClient.java:339)
at sun.net.www.http.HttpClient.New(HttpClient.java:357)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1228)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1162)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1056)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:990)
at com.xxl.job.core.util.XxlJobRemotingUtil.postBody(XxlJobRemotingUtil.java:99)
at com.xxl.job.core.biz.client.ExecutorBizClient.run(ExecutorBizClient.java:43)
at com.xxl.job.admin.core.trigger.XxlJobTrigger.runExecutor(XxlJobTrigger.java:211)
at com.xxl.job.admin.core.trigger.XxlJobTrigger.processTrigger(XxlJobTrigger.java:164)
at com.xxl.job.admin.core.trigger.XxlJobTrigger.trigger(XxlJobTrigger.java:89)
at com.xxl.job.admin.core.thread.JobTriggerPoolHelper 3. r u n ( J o b T r i g g e r P o o l H e l p e r . j a v a : 95 ) a t j a v a . u t i l . c o n c u r r e n t . T h r e a d P o o l E x e c u t o r . r u n W o r k e r ( T h r e a d P o o l E x e c u t o r . j a v a : 1149 ) a t j a v a . u t i l . c o n c u r r e n t . T h r e a d P o o l E x e c u t o r 3.run(JobTriggerPoolHelper.java:95) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor 3.run(JobTriggerPoolHelper.java:95)atjava.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)atjava.util.concurrent.ThreadPoolExecutorWorker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:750)

2. 问题产生的原因

2.1 原因一:执行器和调度中心部署在不同的机器上

在这里插入图片描述

在 XXL-JOB 中,执行器(Executor)是指那些实际执行任务的远程服务。每个执行器都会向 XXL-JOB 的调度中心(Admin)注册自己,并定期发送心跳以保持其注册状态。

如果执行器启动时填写的 ip 地址为 localhost,但执行器和调度中心部署在不同的机器上,那么 XXL-JOB 调度中心将会找不到执行器

执行器的相关信息会被记录在 xxl_job 数据库的 xxl_job_registry 表中

在这里插入图片描述


因为 localhost 代表的是本地,对于调度中心来说,localhost 就是部署调度中心的机器,因为执行器和调度中心部署在不同的机器上,调度中心肯定找不到执行器

2.2 原因二:调度中心部署在云服务器上

如果你是通过云服务器来部署调度中心,但执行器却是在局域网中运行的,那么调度中心将无法与执行器建立连接


Windows环境下使用ipconfig命令显示的IP地址通常是局域网(Local Area Network, LAN)的IP地址。这个地址是根据计算机在局域网中的位置由网络中的DHCP服务器(通常是路由器)分配的,这个地址一般是私有地址,范围如下:

  • 10.0.0.0 到 10.255.255.255
  • 172.16.0.0 到 172.31.255.255
  • 192.168.0.0 到 192.168.255.255

这些私有地址是不会直接在互联网上路由的,它们仅供局域网内部使用。如果计算机需要访问互联网,那么它会通过网络地址转换(NAT)使用一个公网IP地址来与互联网上的其他设备通信。公网IP地址是由您的互联网服务提供商(ISP)分配的,通常不会在ipconfig命令的输出中直接显示。

3. 解决方法

3.1 方法一:将执行器和调度中心部署在同一台机器上

将执行器和调度中心部署在同一台机器上后,调度中心就能找到执行器了

3.2 方法二:手动指定执行器的ip地址(执行器和调度中心需要在同一网络环境下)

如果你是通过虚拟机(使用 VMware 等软件)部署调度中心的,可以通过手动指定执行器的 ip 地址来解决

在这里插入图片描述


按下 Win + R 打开命令行窗口,输入以下指令查看执行器的 ip 地址

在这里插入图片描述

ipconfig

圈出来的几个地址都可以试一下(优先尝试 VMnet8)

在这里插入图片描述

在这里插入图片描述


也可以在调度中心手动录入执行器(多个机器地址之间用英文逗号隔开)

在这里插入图片描述

3.3 方法三:内网穿透(通用方法)

如果你的调度中心是部署在云服务上的,那么前面两个方法都不适用,只能通过内网穿透来解决

我们使用 cpolar 实现内网穿透,cpolar 的使用教程可以参考我的另一篇博文:使用cpolar实现内网穿透,将Web项目部署到公网上


3.3.1 创建隧道

在浏览器打开 cpolar 的控制台,创建隧道

http://localhost:9200/#/tunnels/create
  • 自定义隧道名称
  • 本地地址与执行器占用的端口保持一致

在这里插入图片描述

3.3.2 获取公网地址

查看在线隧道列表,将公网地址记录下来(电脑重启后生成的公网地址可能会发生变化)

在这里插入图片描述

3.3.3 设置执行器的地址

可以在执行器中设置执行器的地址(无需再设置 ip 地址)

在这里插入图片描述

也可以在调度中心手动录入执行器(多个机器地址之间用英文逗号隔开)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2245355.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ettus USRP X410

总线连接器: 以太网 RF频率范围: 1 MHz 至 7.2 GHz GPSDO: 是 输出通道数量: 4 RF收发仪瞬时带宽: 400 MHz 输入通道数量: 4 FPGA: Zynq US RFSoC (ZU28DR) 1 MHz to 7.2 GHz&#xff0c;400 MHz带宽&#xff0c;GPS驯服OCXO&#xff0c;USRP软件无线电设备 Ettus USRP X410集…

哋它亢SEO技术分析:如何提升网站在搜索引擎中的可见性

文章目录 哋它亢SEO技术分析&#xff1a;如何提升网站在搜索引擎中的可见性网站的基本情况SEO优化分析与建议1. 元数据优化2. 关键词优化3. URL结构4. 图像优化5. 移动端优化6. 网站速度7. 结构化数据&#xff08;Schema Markup&#xff09;8. 内链与外链9. 社交分享 哋它亢SEO…

将网站地址改成https地址需要哪些材料

HTTPS&#xff08;安全超文本传输协议&#xff09;是HTTP协议的扩展。它大大降低了个人数据&#xff08;用户名、密码、银行卡号等&#xff09;被拦截的风险&#xff0c;还有助于防止加载网站时的内容替换&#xff0c;包括广告替换。 在发送数据之前&#xff0c;信息会使用SSL…

mongodb多表查询,五个表查询

需求是这样的&#xff0c;而数据是从mysql导入进来的&#xff0c;由于mysql不支持数组类型的数据&#xff0c;所以有很多关联表。药剂里找药物&#xff0c;需要药剂与药物的关联表&#xff0c;然后再找药物表。从药物表里再找药物与成分关联表&#xff0c;最后再找成分表。 这里…

端到端的专线管理与运维:实时掌握专线的运行状态

在当今高度信息化的时代&#xff0c;专线服务已成为企业数据传输的重要组成部分。为了确保专线服务的高效、稳定运行&#xff0c;我们采用了先进的端到端管理模式&#xff0c;对专线的运行状态和质量进行全面监控。本文将从专线管理的必要性、端到端管理模式的优势、实施步骤以…

SpringBoot(8)-任务

目录 一、异步任务 二、定时任务 三、邮件任务 一、异步任务 使用场景&#xff1a;后端发送邮件需要时间&#xff0c;前端若响应不动会导致体验感不佳&#xff0c;一般会采用多线程的方式去处理这些任务&#xff0c;但每次都需要自己去手动编写多线程来实现 1、编写servic…

PostgreSQL常用字符串函数与示例说明

文章目录 coalesce字符串位置(position strpos)字符串长度与大小写转换去掉空格(trim ltrim rtrim)字符串连接(concat)字符串替换简单替换(replace)替换指定位置长度(overlay)正则替换(regexp_replace) 字符串匹配字符串拆分split_part(拆分数组取指定位置的值)string_to_array…

深入剖析Java内存管理:机制、优化与最佳实践

&#x1f680; 作者 &#xff1a;“码上有前” &#x1f680; 文章简介 &#xff1a;Java &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; 深入剖析Java内存管理&#xff1a;机制、优化与最佳实践 一、Java内存模型概述 1. Java内存模型的定义与作…

【论文速读】| RobustKV:通过键值对驱逐防御大语言模型免受越狱攻击

基本信息 原文标题&#xff1a;ROBUSTKV: DEFENDING LARGE LANGUAGE MODELS AGAINST JAILBREAK ATTACKS VIA KV EVICTION 原文作者&#xff1a;Tanqiu Jiang, Zian Wang, Jiacheng Liang, Changjiang Li, Yuhui Wang, Ting Wang 作者单位&#xff1a;Stony Brook University…

css使用弹性盒,让每个子元素平均等分父元素的4/1大小

css使用弹性盒&#xff0c;让每个子元素平均等分父元素的4/1大小 原本&#xff1a; ul {padding: 0;width: 100%;background-color: rgb(74, 80, 62);display: flex;justify-content: space-between;flex-wrap: wrap;li {/* 每个占4/1 */overflow: hidden;background-color: r…

图像处理 之 凸包和最小外围轮廓生成

“ 最小包围轮廓之美” 一起来欣赏图形之美~ 1.原始图片 男人牵着机器狗 2.轮廓提取 轮廓提取 3.最小包围轮廓 最小包围轮廓 4.凸包 凸包 5.凸包和最小包围轮廓的合照 凸包和最小包围轮廓的合照 上述图片中凸包、最小外围轮廓效果为作者实现算法生成。 图形几何之美系列&#…

徒手从零搭建一套ELK日志平台

徒手从零搭建一套ELK日志平台 日志分析的概述日志分析的作用主要收集工具集中式日志系统主要特点采集日志分类ELK概述初级版ELK终极版ELK高级版ELKELK收集日志的两种形式 搭建ELK平台Logstash工作原理Logstash核心概念环境准备安装部署docker添加镜像加速器安装部署Elasticsear…

【论文阅读】Poison Forensics: Traceback of Data Poisoning Attacks in Neural Networks

Poison Forensics: Traceback of Data Poisoning Attacks in Neural Networks 核心原理前提条件方法第一个问题第二个问题 核心原理 有毒样本会使模型更接近参数空间中的最佳位置&#xff0c;良性样本会使该模型向其随机初始化状态移动 前提条件 最重要的&#xff1a; 可以…

递归算法专题一>反转链表

题目&#xff1a; 解析&#xff1a; 也可以把链表看作一棵树&#xff0c;后续遍历这棵树然后和上图一样&#xff0c;改变指针即可 代码&#xff1a; public ListNode reverseList(ListNode head) {if(head null || head.next null) return head;ListNode newHead revers…

拼音。。。。。。。。。。

拼音。文心一言、文心大模型3.5&#xff0c;竟然说错了&#xff0c;如下图。所以&#xff0c;以后都不想在文心一言搜拼音了。。以后搜拼音&#xff0c;还是在百度一下直接搜&#xff0c;搜到的顶头第一条也是AI智能回答&#xff0c;可能比文心一言更加好更加准 正确的说法是&…

K8S资源限制之LimitRange

LimitRange介绍 LimitRange也是一种资源&#xff0c;在名称空间内有效&#xff1b;限制同一个名称空间下pod容器的申请资源的最大值&#xff0c;最小值pod的resources中requests和limits必须在这个范围内&#xff0c;否则pod无法创建。当然pod也可以不使用resources进行创建ty…

【爬虫】Firecrawl对京东热卖网信息爬取(仅供学习)

项目地址 GitHub - mendableai/firecrawl: &#x1f525; Turn entire websites into LLM-ready markdown or structured data. Scrape, crawl and extract with a single API. Firecrawl更多是使用在LLM大模型知识库的构建&#xff0c;是大模型数据准备中的一环&#xff08;在…

JavaParser如何获取方法的返回类型

使用JavaParser 如何获取一个Java类中的某个方法的返回类型呢&#xff1f; 假如有一个如下的简单的Java 类&#xff1a; /*** Copyright (C) Oscar Chen(XM):* * Date: 2024-11-21* Author: XM*/ package com.osxm.ai.sdlc.codeparse.codesample;public class MyClass {public…

25.UE5时间膨胀,慢动作,切换地图,刷BOSS

2-27 时间膨胀、慢动作、切换地图、刷BOSS_哔哩哔哩_bilibili 目录 1.刷新BOSS逻辑 2.时间膨胀实现慢动作 3.胜利画面&#xff0c;下一关 3.1胜利画面UI 3.2第一关、第二关游戏模式 3.3下一关按钮事件的绑定 1.刷新BOSS逻辑 实现当场上的怪物都死亡后&#xff0c;进行刷…

【大语言模型】ACL2024论文-19 SportsMetrics: 融合文本和数值数据以理解大型语言模型中的信息融合

【大语言模型】ACL2024论文-19 SportsMetrics: 融合文本和数值数据以理解大型语言模型中的信息融合 https://arxiv.org/pdf/2402.10979 目录 文章目录 【大语言模型】ACL2024论文-19 SportsMetrics: 融合文本和数值数据以理解大型语言模型中的信息融合目录摘要研究背景问题与挑…