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分钟执行一次什么的

    @Resource
    ReportController reportController;
 
    @Override
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
        //项目部署时,会在这里执行一次,从数据库拿到cron表达式
        // 这句代码就是获取定时任务的执行规则,你从哪里获取都可以,从数据库,从配置中心apollo都可以,根据你的业务需求来。
//        cron = "0/20 * * * * ? "; // 这句是个伪代码,你明白意思就好
 
       Runnable task = new Runnable() {
           @Override
           public void run() {
              //任务逻辑代码部分.这里调用你要执行的任务就行了
              log.info("批量查询接口定时器执行当前时间:" + LocalDateTime.now());
               log.info("cron = " + cron);
               try {
                   reportController.scheduleQueryByGroup();
               } catch (Exception e) {
                   e.printStackTrace();
               }
           }
       };
       Trigger trigger = new Trigger() {
           @Override
           public Date nextExecutionTime(TriggerContext triggerContext) {
              //任务触发,可修改任务的执行周期.
              //每一次任务触发,都会执行这里的方法一次,重新获取下一次的执行时间        
//              cron = "0/5 * * * * ? ";
              CronTrigger trigger = new CronTrigger(cron);
              Date nextExec = trigger.nextExecutionTime(triggerContext);
              return nextExec;
           }
       };
       taskRegistrar.addTriggerTask(task, trigger);
    }
 
}

  • 24
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
npm warn deprecated apollo-server-core@3.12.0: the `apollo-server-core` package has been deprecated. 这个警告意味着`apollo-server-core`包已被废弃。废弃意味着它将在将来的版本中不再被维护或更新。当我们在使用npm安装或更新项目依赖时,如果看到这个警告,就意味着有一些问题需要解决。 在本例中,警告涉及到`apollo-server-core` 版本3.12.0。这个包是Apollo的一个核心组件,用于构建GraphQL服务器。然而,该版本已被废弃,这意味着它存在一些问题或者有更好的替代选择。 废弃的软件包存在一些风险,因为它们不再得到维护或更新。这可能导致安全漏洞、缺陷或不兼容问题。所以,我们需要尽快寻找替代方案。 为了解决这个问题,我们可以查看`apollo-server-core`的文档或发布信息,以了解更多关于废弃的原因和可能的替代包的信息。通常,`apollo-server-core`的维护者会提供一些指导或建议,告诉我们如何迁移到更新的版本或其他相关的包。 我们可以使用命令`npm outdated`来检查是否有更近的版本可用,并尝试更新到最新的兼容版本。如果没有直接的替代包,我们可以考虑使用类似的库或搜索其他的GraphQL服务器解决方案。 总之,当我们看到npm的警告废弃某个软件包时,我们需要密切关注相关的文档和发布信息,寻找替代方案,并尽快做出调整以避免可能带来的问题或风险。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Oliver_LaVine

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值