XXL-Job使用GLUE(Java)调度REST接口

2023-11-21 14:10

本文主要是介绍XXL-Job使用GLUE(Java)调度REST接口,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这里就不介绍xxl-job的使用教程了,很简单很好用。
本次仅仅分享使用xxl-job调用REST接口的过程。

首先xxl-job-admin你应该先跑起来,然后新建一个SpringBoot项目里面加上xxl-job的依赖,xxl-job的config等配置信息

Maven中加入xxl-job-core的依赖
<!-- ===========XXL-JOB-CORE=============== --><dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job-core</artifactId><version>2.1.0</version></dependency>

application.properties追加以下内容


xxl.job.admin.address = http://127.0.0.1:8080/xxl-job-admin
xxl.job.executor.appname = rone-spark
xxl.job.executor.ip = 127.0.0.1
xxl.job.executor.port = 9999
xxl.job.executor.logpath = /data/applogs/xxl-job/jobhandler
xxl.job.executor.logretentiondays = -1

然后在新建一个xxl-job-config类

package com.rone.demo.XXLJob;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;@Configuration
public class XxlJobConfig {private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);@Value("${xxl.job.admin.address}")private String adminAddresses ;//="http://localhost:8080/xxl-job-admin" ;@Value("${xxl.job.executor.appname}")private String appName ;//="RoneDemo";@Value("${xxl.job.executor.ip}")private String ip ;//= "127.0.0.1";@Value("${xxl.job.executor.port}")private int port ;//= 9999;/* @Value("${xxl.job.accessToken}")*/private String accessToken;@Value("${xxl.job.executor.logpath}")private String logPath ;//@Value("${xxl.job.executor.logretentiondays}")private int logRetentionDays = -1;@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;}}

这里注意

import org.springframework.http.*;
import org.springframework.web.client.RestTemplate;

这两个依赖是SpringBoot调用REST接口的包,因为我们要call REST所以要使用这两个依赖,一定要加上

package com.rone.demo.XXLJob;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 org.springframework.http.*;
import org.springframework.web.client.RestTemplate;
/*** 任务Handler示例(Bean模式)** 开发步骤:* 1、继承"IJobHandler":“com.xxl.job.core.handler.IJobHandler”;* 2、注册到Spring容器:添加“@Component”注解,被Spring容器扫描为Bean实例;* 3、注册到执行器工厂:添加“@JobHandler(value="自定义jobhandler名称")”注解,注解value值对应的是调度中心新建任务的JobHandler属性的值。* 4、执行日志:需要通过 "XxlJobLogger.log" 打印执行日志;*/
@JobHandler(value="sparkJobHandler")
@Component
public class RunSparkHandler extends IJobHandler {@Overridepublic ReturnT<String> execute(String warPath) throws Exception {XxlJobLogger.log("============================Run Spark Job=======================");XxlJobLogger.log("war Path : =================" + warPath);XxlJobLogger.log("============================Call Successfully=======================");return SUCCESS;}
}

接着就是直接run了,新建执行器,appName一定要与application.properties里面配置的一样,还有机器地址与端口要与配置文件中的一致
在这里插入图片描述
新建一个任务,选择我们刚刚建立的执行器,运行模式选择GLUE(Java),其它的参照一下就好。
在这里插入图片描述接着选择操作->GLUE IDE

在这里插入图片描述我们会新开一个标签页,在新开的见面写我们需要call的端口与地址
在这里插入图片描述这里是详细代码,由于隐私问题我把Spark地址与端口改成了example请见谅

package com.xxl.job.service.handler;import com.xxl.job.core.log.XxlJobLogger;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.IJobHandler;//注意这里是我们在excutor中引入的两个RestTemplate相关包
import org.springframework.http.*;
import org.springframework.web.client.RestTemplate;public class DemoGlueJobHandler extends IJobHandler {String LIVY_HOST = "http://192.168.1.1";String HDFS_HOST = "cdh01";//192.168.1.1String LIVY_PORT = "8990";String HDFS_PORT = "50070";String SESSIONS = "sessions";String STATEMENTS = "statements";String BATCHES = "batches";@Overridepublic ReturnT<String> execute(String param) throws Exception {XxlJobLogger.log("Test RestFull");RestTemplate client = new RestTemplate();HttpHeaders headers = new HttpHeaders();String pData = "{\"file\":\"hdfs://"+HDFS_HOST+":"+HDFS_PORT+"/user/spark/SparkLR.jar\",\"className\":\"com.rone.DBUtils.MySQLOperations\"}";HttpEntity<String> entity = new HttpEntity<>(pData,headers);ResponseEntity<Map> resp = client.exchange(LIVY_HOST+":"+LIVY_PORT+"/"+BATCHES+"/", HttpMethod.POST, entity, Map.class);return ReturnT.SUCCESS;}}

在这里插入图片描述
然后测试执行就OK了,

这篇关于XXL-Job使用GLUE(Java)调度REST接口的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/402813

相关文章

spring AMQP代码生成rabbitmq的exchange and queue教程

《springAMQP代码生成rabbitmq的exchangeandqueue教程》使用SpringAMQP代码直接创建RabbitMQexchange和queue,并确保绑定关系自动成立,简... 目录spring AMQP代码生成rabbitmq的exchange and 编程queue执行结果总结s

Java调用Python脚本实现HelloWorld的示例详解

《Java调用Python脚本实现HelloWorld的示例详解》作为程序员,我们经常会遇到需要在Java项目中调用Python脚本的场景,下面我们来看看如何从基础到进阶,一步步实现Java与Pyth... 目录一、环境准备二、基础调用:使用 Runtime.exec()2.1 实现步骤2.2 代码解析三、

聊聊springboot中如何自定义消息转换器

《聊聊springboot中如何自定义消息转换器》SpringBoot通过HttpMessageConverter处理HTTP数据转换,支持多种媒体类型,接下来通过本文给大家介绍springboot中... 目录核心接口springboot默认提供的转换器如何自定义消息转换器Spring Boot 中的消息

python之uv使用详解

《python之uv使用详解》文章介绍uv在Ubuntu上用于Python项目管理,涵盖安装、初始化、依赖管理、运行调试及Docker应用,强调CI中使用--locked确保依赖一致性... 目录安装与更新standalonepip 安装创建php以及初始化项目依赖管理uv run直接在命令行运行pytho

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

Spring Boot 整合 SSE(Server-Sent Events)实战案例(全网最全)

《SpringBoot整合SSE(Server-SentEvents)实战案例(全网最全)》本文通过实战案例讲解SpringBoot整合SSE技术,涵盖实现原理、代码配置、异常处理及前端交互,... 目录Spring Boot 整合 SSE(Server-Sent Events)1、简述SSE与其他技术的对

Spring Security 前后端分离场景下的会话并发管理

《SpringSecurity前后端分离场景下的会话并发管理》本文介绍了在前后端分离架构下实现SpringSecurity会话并发管理的问题,传统Web开发中只需简单配置sessionManage... 目录背景分析传统 web 开发中的 sessionManagement 入口ConcurrentSess

Java整合Protocol Buffers实现高效数据序列化实践

《Java整合ProtocolBuffers实现高效数据序列化实践》ProtocolBuffers是Google开发的一种语言中立、平台中立、可扩展的结构化数据序列化机制,类似于XML但更小、更快... 目录一、Protocol Buffers简介1.1 什么是Protocol Buffers1.2 Pro

Java实现本地缓存的四种方法实现与对比

《Java实现本地缓存的四种方法实现与对比》本地缓存的优点就是速度非常快,没有网络消耗,本地缓存比如caffine,guavacache这些都是比较常用的,下面我们来看看这四种缓存的具体实现吧... 目录1、HashMap2、Guava Cache3、Caffeine4、Encache本地缓存比如 caff

C#使用Spire.XLS快速生成多表格Excel文件

《C#使用Spire.XLS快速生成多表格Excel文件》在日常开发中,我们经常需要将业务数据导出为结构清晰的Excel文件,本文将手把手教你使用Spire.XLS这个强大的.NET组件,只需几行C#... 目录一、Spire.XLS核心优势清单1.1 性能碾压:从3秒到0.5秒的质变1.2 批量操作的优雅