jsp项目引入apollo-并实现动态参数控制定时任务

一、基础配置:

1、pom引入:

<dependency><groupId>com.ctrip.framework.apollo</groupId><artifactId>apollo-client</artifactId><version>1.8.0</version><exclusions><exclusion><artifactId>guava</artifactId><groupId>com.google.guava</groupId></exclusion></exclusions>
</dependency>
<dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>19.0</version>
</dependency>
 

2、由于依赖冲突,需要修改Spring版本

<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring.version>4.3.2.RELEASE</spring.version>
</properties>

3、由于比较多的包包含了guava的包,会导致依赖冲突,因此需要在引入的包中排除已有的包,用自己新引入的guava包

4、按照官网的要求,必须在resources中的META-INF新建该文件

apollo.cacheDir主要是为了本地配置apollo读取的代码环境,比如DEV等,但也并非必须,可加可不加

5、在该项目中的配置文件中引入apollo

ps:

①别放错了文件,注意区别spring的配置文件到底是哪个

②此处的

<apollo:config namespaces="application,security" order="1"/>

application、security主要是看apollo的服务端到底建的是哪些命名空间(由于此处公司运维要求,所以必须得用这两个)

6、由于改变了一些依赖的版本,因此需要将部分引入的包进行修改

同理,将报错的代码文件改成对应的新的方法

如此,项目基础引入apollo就可以正常使用了

二、使用方式

1、登录具有创建项目权限的账号,通过一下方式进行创建项目

2、将项目中的所有配置存放到项目中

3、直接启动代码就可以发现现在使用的都是apollo中的配置内容了

三、通过以下方式即可实现变量读取apollo的数据,进而实现动态修改项目需要使用的参数

 

ps:切记!!!

reportSize:100

为了使用apollo,必须得在读取的变量后面定义默认值,如果读取不到就会使用默认值

${配置名称:默认值}

四、(进阶使用)健康日志使用自定义分片定时任务

package com.bd.plugin.report.config;import com.bd.service.servlet.ReportController;
import lombok.extern.slf4j.Slf4j;
import org.joda.time.LocalDateTime;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.Trigger;
import org.springframework.scheduling.TriggerContext;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import org.springframework.scheduling.support.CronTrigger;
import org.springframework.stereotype.Component;import javax.annotation.Resource;
import java.util.Date;@Component
@Slf4j
public class TaskCronChange implements SchedulingConfigurer {@Value("${scheduleTimes:0 0 0 * * ?}")public String cron; // 这个是定时任务的执行规则,比如每2分钟执行一次什么的@ResourceReportController reportController;@Overridepublic void configureTasks(ScheduledTaskRegistrar taskRegistrar) {//项目部署时,会在这里执行一次,从数据库拿到cron表达式// 这句代码就是获取定时任务的执行规则,你从哪里获取都可以,从数据库,从配置中心apollo都可以,根据你的业务需求来。
//        cron = "0/20 * * * * ? "; // 这句是个伪代码,你明白意思就好Runnable task = new Runnable() {@Overridepublic void run() {//任务逻辑代码部分.这里调用你要执行的任务就行了log.info("批量查询接口定时器执行当前时间:" + LocalDateTime.now());log.info("cron = " + cron);try {reportController.scheduleQueryByGroup();} catch (Exception e) {e.printStackTrace();}}};Trigger trigger = new Trigger() {@Overridepublic Date nextExecutionTime(TriggerContext triggerContext) {//任务触发,可修改任务的执行周期.//每一次任务触发,都会执行这里的方法一次,重新获取下一次的执行时间        
//              cron = "0/5 * * * * ? ";CronTrigger trigger = new CronTrigger(cron);Date nextExec = trigger.nextExecutionTime(triggerContext);return nextExec;}};taskRegistrar.addTriggerTask(task, trigger);}}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++杂货铺】详解类和对象 [上]

博主&#xff1a;代码菌-CSDN博客 专栏&#xff1a;C杂货铺_代码菌的博客-CSDN博客 目录 &#x1f308;前言&#x1f308; &#x1f4c1; 面向对象语言的特性 &#x1f4c1; 类 &#x1f4c2; 概念 &#x1f4c2; 定义 &#x1f4c1; 访问限定符 &#x1f4c2;分类 &#x…

立创EDA/PCB使用下单助手下单

优惠券领取 首先下载嘉立创订单助手&#xff0c;在助手里面领取并使用 这里我已经领取了 打开下单助手-PCB/FPB下单 或者 上传PCB文件 下单 等待gerber就绪后&#xff0c;点击立即下单 选择该项 点击开始下单 提交订单 按规则排除错误&#xff0c;没有问题后&#x…

.NET高级面试指南专题一【委托和事件】

在C#中&#xff0c;委托&#xff08;Delegate&#xff09;和事件&#xff08;Event&#xff09;是两个重要的概念&#xff0c;它们通常用于实现事件驱动编程和回调机制。 委托定义&#xff1a; 委托是一个类&#xff0c;它定义了方法的类型&#xff0c;使得可以将方法当作另一个…

高中数学:集合

一、基本概念与关系 1、元素 2、集合 集合中元素的特性 1、确定性。2、无序性。3、互异性。 3、空集&#xff0c;用∅符号表示 4、元素与集合的关系是属于关系&#xff0c;用∈符号表示 5、集合与集合的关系是包含关系。用⊆或者⊊符号表示 子集与真子集。 A⊊B > A⊆B 反之…

windows系统中如何安装tomcat

在 Windows 系统中安装 Tomcat 通常涉及以下步骤: 1.下载 Tomcat: 访问 Apache Tomcat 官方网站。在 "Download" 部分找到适用于 Windows 的最新版本的 Tomcat。下载 Core 二进制分发版(通常是.zip文件)。 2.解压 Tomcat 压缩包: 将下载的.zip文件解压到…

Linux使用二进制包安装MySQL

目录 一、软件包下载 二、上传软件包到Linux根目录 1、使用xftp将软件包上传到根目录 2、解压缩 三、准备工作 四、初始化软件 五、设置MySQL的配置文件 六、配置启动脚本 一、软件包下载 官网下载&#xff1a;MySQL :: Download MySQL Community Server 二、上传软件…

Python第十二章(函数)

一。函数的创建规则必须是&#xff1a;先创建后调用&#xff08;当调用函数的时候&#xff0c;解释器回到函数定义的地方去执行下方缩进的代码&#xff0c;再进行函数下的内容&#xff09; 定义函数语法&#xff1a;def 函数名(参数)&#xff1a; 代码1..... 调用函数的语法&…

使用make_grid多批次显示网格图像(使用CIFAR数据集介绍)

背景介绍 在机器学习的训练数据集中&#xff0c;我们经常使用多批次的训练来实现更好的训练效果&#xff0c;具体到cv领域&#xff0c;我们的训练数据集通常是[B,C,W,H]格式&#xff0c;其中&#xff0c;B是每个训练批次的大小&#xff0c;C是图片的通道数&#xff0c;如果是1…

OpenHarmony关系型数据库

1 概述 关系型数据库(Relational Database, 以下简称RDB)是一种基于关系模型来管理数据的数据库&#xff0c;是在SQLite基础上提供一套完整的对本地数据库进行管理的机制&#xff0c;为开发者提供无需编写原生SQL语句即可实现数据增、删、改、查等接口&#xff0c;同时开发者也…

2023.1.23 关于 Redis 哨兵模式详解

目录 引言 人工恢复主节点故障 ​编辑 主从 哨兵模式 Docker 模拟部署哨兵模式 关于端口映射 展现哨兵机制 哨兵重新选取主节点的流程 哨兵模式注意事项 引言 人工恢复主节点故障 1、正常情况 2、主节点宕机 3、程序员主动恢复 先看看该主节点还能不能抢救如果不好定…

Vue中使用TypeScript:全面指南和最佳实践

🚀 欢迎来到我的专栏!专注于Vue3的实战总结和开发实践分享,让你轻松驾驭Vue3的奇妙世界! 🌈✨在这里,我将为你呈现最新的Vue3技术趋势,分享独家实用教程,并为你解析开发中的难题。让我们一起深入Vue3的魅力,助力你成为Vue大师! 👨‍💻💡不再徘徊,快来关注…

首发:2024全球DAO组织发展研究

作者&#xff0c;张群&#xff08;专注DAO及区块链应用研究&#xff0c;赛联区块链教育首席讲师&#xff0c;工信部赛迪特邀资深专家&#xff0c;CSDN认证业界专家&#xff0c;微软认证专家&#xff0c;多家企业区块链产品顾问&#xff09; DAO&#xff08;去中心化自治组织&am…