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

相关文章

详解Vue如何使用xlsx库导出Excel文件

《详解Vue如何使用xlsx库导出Excel文件》第三方库xlsx提供了强大的功能来处理Excel文件,它可以简化导出Excel文件这个过程,本文将为大家详细介绍一下它的具体使用,需要的小伙伴可以了解... 目录1. 安装依赖2. 创建vue组件3. 解释代码在Vue.js项目中导出Excel文件,使用第三

Linux alias的三种使用场景方式

《Linuxalias的三种使用场景方式》文章介绍了Linux中`alias`命令的三种使用场景:临时别名、用户级别别名和系统级别别名,临时别名仅在当前终端有效,用户级别别名在当前用户下所有终端有效... 目录linux alias三种使用场景一次性适用于当前用户全局生效,所有用户都可调用删除总结Linux

Java实现Excel与HTML互转

《Java实现Excel与HTML互转》Excel是一种电子表格格式,而HTM则是一种用于创建网页的标记语言,虽然两者在用途上存在差异,但有时我们需要将数据从一种格式转换为另一种格式,下面我们就来看看... Excel是一种电子表格格式,广泛用于数据处理和分析,而HTM则是一种用于创建网页的标记语言。虽然两

java图像识别工具类(ImageRecognitionUtils)使用实例详解

《java图像识别工具类(ImageRecognitionUtils)使用实例详解》:本文主要介绍如何在Java中使用OpenCV进行图像识别,包括图像加载、预处理、分类、人脸检测和特征提取等步骤... 目录前言1. 图像识别的背景与作用2. 设计目标3. 项目依赖4. 设计与实现 ImageRecogni

Java中Springboot集成Kafka实现消息发送和接收功能

《Java中Springboot集成Kafka实现消息发送和接收功能》Kafka是一个高吞吐量的分布式发布-订阅消息系统,主要用于处理大规模数据流,它由生产者、消费者、主题、分区和代理等组件构成,Ka... 目录一、Kafka 简介二、Kafka 功能三、POM依赖四、配置文件五、生产者六、消费者一、Kaf

Java访问修饰符public、private、protected及默认访问权限详解

《Java访问修饰符public、private、protected及默认访问权限详解》:本文主要介绍Java访问修饰符public、private、protected及默认访问权限的相关资料,每... 目录前言1. public 访问修饰符特点:示例:适用场景:2. private 访问修饰符特点:示例:

python管理工具之conda安装部署及使用详解

《python管理工具之conda安装部署及使用详解》这篇文章详细介绍了如何安装和使用conda来管理Python环境,它涵盖了从安装部署、镜像源配置到具体的conda使用方法,包括创建、激活、安装包... 目录pytpshheraerUhon管理工具:conda部署+使用一、安装部署1、 下载2、 安装3

Mysql虚拟列的使用场景

《Mysql虚拟列的使用场景》MySQL虚拟列是一种在查询时动态生成的特殊列,它不占用存储空间,可以提高查询效率和数据处理便利性,本文给大家介绍Mysql虚拟列的相关知识,感兴趣的朋友一起看看吧... 目录1. 介绍mysql虚拟列1.1 定义和作用1.2 虚拟列与普通列的区别2. MySQL虚拟列的类型2

详解Java如何向http/https接口发出请求

《详解Java如何向http/https接口发出请求》这篇文章主要为大家详细介绍了Java如何实现向http/https接口发出请求,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用Java发送web请求所用到的包都在java.net下,在具体使用时可以用如下代码,你可以把它封装成一

使用MongoDB进行数据存储的操作流程

《使用MongoDB进行数据存储的操作流程》在现代应用开发中,数据存储是一个至关重要的部分,随着数据量的增大和复杂性的增加,传统的关系型数据库有时难以应对高并发和大数据量的处理需求,MongoDB作为... 目录什么是MongoDB?MongoDB的优势使用MongoDB进行数据存储1. 安装MongoDB