xxl-job服务化

这篇具有很好参考价值的文章主要介绍了xxl-job服务化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

xxl-job作为服务,之前使用都是每个服务配置信息,采用方法的形式,xxl-job作为服务的话,只需要进行配置

配置信息
## xxljob 配置
xxl:
  job:
    enabled: false
    # 执行器通讯TOKEN [选填]:非空时启用
    #    accessToken:
    # 单个地址或多个地址逗号隔开或 注册中心服务名
    adminAddress: http://127.0.0.1:8898/xxl-job-admin
    # 调度中心的 context-path:
    # jobAdminContextPath: /job-admin
    ### 执行器AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册
    appname: ${spring.application.name}
    ### 执行器注册 [选填]:优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。
    ### 从而更灵活的支持容器类型执行器动态IP和动态映射端口问题。
    #    address:
    #    ip:
    #    port: 9999
    # 执行器运行日志文件存储磁盘路径
    #    logpath: logs/xxl-job
    # 执行器日志文件保存天数
    logRetentionDays: 180
xxl-job创建任务

xxl-job相关输入

clientClass 实现类

clientMethod 调用的方法

加参数,比如用户为张三,年龄18
,"name":"张三","age":18

JobHandler:CommonXxlJobHandler
任务参数:{"clientClass":"com.sxcoal.station.common.client.admin.JournalismAdminClient","clientMethod":"getNewsHitsTopTenList","type":1}
 

JobHandler 如何通信的呢
CommonXxlJobHandler 作为一个微服务的项目,去做了xxl-job的整合,通过反射调用,核心代码

package com.sxcoal.station.job.executor.config;

import com.alibaba.fastjson.JSONObject;
import com.sxcoal.common.utils.SpringContextUtils;
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import java.lang.reflect.Method;

@Slf4j
@Component
@RequiredArgsConstructor
public class CommonXxlJob {

    @XxlJob("CommonXxlJobHandler")
    public void CommonXxlJobHandler() throws Exception {

        XxlJobHelper.log("通用任务执行:{}", XxlJobHelper.getJobParam());
        log.info("通用任务执行:{}", XxlJobHelper.getJobParam());
        JSONObject jsonObject = JSONObject.parseObject(XxlJobHelper.getJobParam());
        Object object = SpringContextUtils.getBean(jsonObject.getString("clientClass"));
        Method method = object.getClass().getMethod(jsonObject.getString("clientMethod"), JSONObject.class);
        log.info("通用任务执行 client 调用返回:{}", method.invoke(object, jsonObject));
    }
}
针对处理的类(DailyPriceClient内容)

ServiceNameConstants.JOURNALISM_ADMIN 代表哪个服务文章来源地址https://www.toymoban.com/news/detail-736762.html

package com.sxcoal.station.common.client.admin;

import com.alibaba.fastjson.JSONObject;
import com.sxcoal.common.domain.RespResult;
import com.sxcoal.common.model.mq.CommonMessageDto;
import com.sxcoal.station.common.constant.ServiceNameConstants;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

@FeignClient(
        value = ServiceNameConstants.JOURNALISM_ADMIN
        , contextId = "journalismAdmin"
        , fallbackFactory = JournalismAdminClientFallbackFactory.class
)
public interface JournalismAdminClient {

    //新闻热榜定时任务
    @PostMapping(value = "/news/getNewsHitsTopTenList")
    RespResult<?> getNewsHitsTopTenList(@RequestBody JSONObject json);

}
 异常收集(方法和内容一样,做异常处理)
package com.sxcoal.coalresource.common.client.fallback.admin;

import com.sxcoal.coalresource.common.client.admin.CombinationPackageMiddleClient;
import com.sxcoal.common.domain.RespEnum;
import com.sxcoal.common.domain.RespResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;

import java.util.List;

@Slf4j
@Component
public class CombinationPackageMiddleFallbackFactory implements FallbackFactory<CombinationPackageMiddleClient> {


    @Override
    public CombinationPackageMiddleClient create(Throwable cause) {
        log.error("{} Client 调用异常: {}", "combinationPackageMiddleService", cause.getMessage(), cause);
        return new CombinationPackageMiddleClient() {
            @Override
            public RespResult<List<Long>> getCombinationIdListBySingleId(Long singleId) {
                return RespResult.error(RespEnum.SERVICE_FALLBACK_ERROR.getMessage(), cause.getMessage());
            }
        };
    }
}
服务内容(实现的功能)
@ApiOperation(value = "新闻浏览量前10列表")
@PostMapping(value = "/getNewsHitsTopTenList")
public RespResult<?> getNewsHitsTopTenList(@RequestBody JSONObject jsonObject) {
    String flagStr = newsService.getNewsHitsTopTenList(jsonObject.getInteger("type"));
    if (StringUtils.equals("true", flagStr)) {
        return RespResult.ok(null, "成功");
    } else if (StringUtils.equals("false", flagStr)) {
        return RespResult.error();
    } else if (StringUtils.equals("news null", flagStr)) {
        return RespResult.error("查询新闻点击量前10的数据结果为空!");
    }
    return null;
}

到了这里,关于xxl-job服务化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Boot 整合 xxl-job

    官方文档:https://www.xuxueli.com/xxl-job/ XXL-JOB 是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。 说明:官方文档很重要,而且非常详细,要慢慢适应看官方文档进行学习! PS:下面搭

    2023年04月13日
    浏览(26)
  • Spring Boot整合 xxl-job

    目录 1. 介绍 2. SpringBoot整合xxl-job 2.1. 配置数据库 2.2. 运行调动中心 2.3. 整合业务服务 2.3.1. 引入maven依赖 2.3.2. 创建业务服务配置类 2.3.3. 创建定时任务 xxl-job是一个分布式定时器任务派遣服务,这个项目主要有以下三部分组成 :  xxl-job-admin: 调动中心,主要是提供任务管理

    2024年02月13日
    浏览(30)
  • spring boot + xxl-job 分布式任务调度

    1、任务调度 1.1、什么是任务调度 我们可以先思考一下下面业务场景的解决方案: 某电商系统需要在每天上午10点,下午3点,晚上8点发放一批优惠券。 某财务系统需要在每天上午10点前结算前一天的账单数据,统计汇总。 某电商平台每天凌晨3点,要对订单中的无效订单进行

    2024年02月09日
    浏览(48)
  • PaddleOCR 使用 FastDeploy 服务化部署及postman、java调用服务的方法

    目录 服务化部署 postman调用 java调用 题外话 部署这块大部分按着官方文档来做就差不多 PaddleOCR/deploy/fastdeploy/serving/fastdeploy_serving at dygraph · PaddlePaddle/PaddleOCR · GitHub 提一下两个需要注意的点。 一、如果跟我一样选择的是cpu的版本,那么修改config.pbtxt配置文件时不仅得按官方

    2024年02月08日
    浏览(29)
  • 微服务开发系列 第十一篇:XXL-JOB

    A、技术栈 开发语言:Java 1.8 数据库:MySQL、Redis、MongoDB、Elasticsearch 微服务框架:Spring Cloud Alibaba 微服务网关:Spring Cloud Gateway 服务注册和配置中心:Nacos 分布式事务:Seata 链路追踪框架:Sleuth 服务降级与熔断:Sentinel ORM框架:MyBatis-Plus 分布式任务调度平台:XXL-JOB 消息中间

    2024年02月10日
    浏览(29)
  • Java -- XXL-JOB分布式任务调度平台

    XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用 xxl是xxl-job的开发者大众点评的【许雪里】名称的拼音开头 官网地址 分布式任务调度平台XXL-JOB 文档地址 中文文档 English Docu

    2024年02月11日
    浏览(35)
  • Spring@Scheduled定时任务接入XXL-JOB的一种方案(基于SC Gateway)

    目前在职的公司,维护着Spring Cloud分布式微服务项目有25+个。其中有10个左右微服务都写有定时任务逻辑,采用Spring @Scheduled这种方式。 Spring @Scheduled定时任务的缺点: 不支持集群:为避免重复执行,需引入分布式锁 死板不灵活:不支持手动执行,单次执行,补偿执行,修改

    2024年02月11日
    浏览(33)
  • 微服务: xxl-job的安装(docker),使用及springboot整合[完整版详解]

    XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。 1.1.1 xxl-job作用 统一管理定时调度任务 相比于 springboot的@Scheduled , 这个表达式可以随意修改 也可以面对更加复杂的定时调度

    2024年02月08日
    浏览(25)
  • 【 XXL-JOB】 XXL-JOB任务分片

    xxl-job 是一个分布式任务调度平台,支持定时任务和分片任务。其中,分片任务可以将一个大任务拆分成多个小任务,分布式地执行,提高任务的执行效率和可靠性。分片任务中,有一种特殊的任务类型叫做分片广播任务,可以将一个任务广播到所有的执行器节点上执行,本

    2024年02月09日
    浏览(30)
  • 定时任务特辑 | Quartz、xxl-job、elastic-job、Cron四个定时任务框架对比,和Spring Boot集成实战

    专栏集锦,大佬们可以收藏以备不时之需: Spring Cloud 专栏: Python 专栏: Redis 专栏: TensorFlow 专栏: Logback 专栏: 量子计算: 量子计算 | 解密著名量子算法Shor算法和Grover算法 AI机器学习实战: AI机器学习实战 | 使用 Python 和 scikit-learn 库进行情感分析 AI机器学习 | 基于lib

    2024年02月05日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包