网站首页 > 开源技术 正文
因前面文章《微服务调度中心升级xxl-job及xxl-job改造》介绍的不是很详细,这里再补充一下。
为了解决执行器端也就是业务端需要单独开一个netty的nio服务端口,仅仅是为了几首xxl-admin 端发送到业务端的调度任务这个场景,让人头疼,所以对源码进行修改,采用http来直接调用服务即可。
其中对源码进行了如下修改:
1、XxlJobExecutor.java中的initEmbedServer(address, ip, port, appname, accessToken);进行了修改。
// 开启netty-server -->替换成web http请求方式。
private void initEmbedServer(String address, String ip, int port, String appname, String accessToken) throws Exception {
// fill ip port
// port = port>0?port: NetUtil.findAvailablePort(9999);
ip = (ip!=null&&ip.trim().length()>0)?ip: IpUtil.getIp();
// generate address
if (address==null || address.trim().length()==0) {
// registry-address:default use address to registry , otherwise use ip:port if address is null
String ip_port_address = IpUtil.getIpPort(ip, port);
address = "http://{ip_port}/".replace("{ip_port}", ip_port_address);
}
// accessToken
if (accessToken==null || accessToken.trim().length()==0) {
logger.warn(">>>>>>>>>>> xxl-job accessToken is empty. To ensure system security, please set the accessToken.");
}
// start
embedServer = new EmbedServer();
embedServer.start(address, port, appname, accessToken);
}
2、EmbedServer.java 进行了修改。
package com.xxl.job.core.server;
import com.xxl.job.core.biz.ExecutorBiz;
import com.xxl.job.core.biz.impl.ExecutorBizImpl;
import com.xxl.job.core.biz.model.*;
import com.xxl.job.core.thread.ExecutorRegistryThread;
import com.xxl.job.core.util.GsonTool;
import com.xxl.job.core.util.ThrowableUtil;
import com.xxl.job.core.util.XxlJobRemotingUtil;
//import io.netty.bootstrap.ServerBootstrap;
//import io.netty.buffer.Unpooled;
//import io.netty.channel.*;
//import io.netty.channel.nio.NioEventLoopGroup;
//import io.netty.channel.socket.SocketChannel;
//import io.netty.channel.socket.nio.NioServerSocketChannel;
//import io.netty.handler.codec.http.*;
//import io.netty.handler.timeout.IdleStateEvent;
//import io.netty.handler.timeout.IdleStateHandler;
//import io.netty.util.CharsetUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.concurrent.*;
/**
* Copy from : https://github.com/xuxueli/xxl-rpc
*
* @author xuxueli 2020-04-11 21:25
*/
public class EmbedServer {
private static final Logger logger = LoggerFactory.getLogger(EmbedServer.class);
public void start(final String address, final int port, final String appname, final String accessToken){
// start registry
startRegistry(appname, address,accessToken);
}
public void stop() throws Exception {
// stop registry
stopRegistry();
logger.info(">>>>>>>>>>> xxl-job remoting server destroy success.");
}
// ---------------------- registry ----------------------
public void startRegistry(final String appname, final String address,final String accessToken) {
// start registry
ExecutorRegistryThread.getInstance().start(appname, address);
}
public void stopRegistry() {
// stop registry
ExecutorRegistryThread.getInstance().toStop();
}
}
主要是执行器不再通过netty来启动,直接使用http来访问即可。
猜你喜欢
- 2024-09-28 Spring Boot | Spring Boot整合XXL-JOB开发定时任务
- 2024-09-28 springboot整合xxl-job分布式定时任务
- 2024-09-28 XXL-JOB 针对未授权访问导致远程命令执行漏洞的声明
- 2024-09-28 XXL-Job 适配 Postgre 数据库的完整流程
- 2024-09-28 定时任务框架选型Quartz/Xxl-Job(较大多层框架结构基础选型技术经济分析)
- 2024-09-28 记一次 xxl-job 实战(记一次运动会作文600字六年级点面结合)
- 2024-09-28 项目基础部署汇总八---linux下xxl-job安装
- 2024-09-28 SpringBoot基础教程3-1-4 xxl-job快速整合
- 2024-09-28 xxl-job v2.1.0正式发布(京办电脑版官方下载v2.1.0)
- 2024-09-28 简单易懂,分布式任务调度平台XXL-JOB快速搭建
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)