【Spring-boot-route(十九)Spring-boot-admin监控服务+(二十)spring-boot-route(二十)Spring Task实现简单定时任务】

时间:2023-02-15 11:30:44

​SpringBootAdmin​​​不是Spring官方提供的模块,它包含了​​Client​​​和​​Server​​两部分。server部分提供了用户管理界面,client即为被监控的服务。client需要注册到server端。

SpringBootAdmin提供了很少的几个监控服务端点,需要依赖SpringBootActuator丰富监控功能。


server端配置

server端的配置很简单,无需任何开发。

第一步:引入依赖


<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>2.3.0</version>
</dependency>


第二步:在启动类上增加@EnableAdminServer注解,开启对spring-boot-admin的支持。


@SpringBootApplication
@EnableAdminServer
public class SpringBootAdminApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootAdminApplication.class, args);
}
}

做好以上配置,然后访问​​​​IP:PORT效果如下:

【Spring-boot-route(十九)Spring-boot-admin监控服务+(二十)spring-boot-route(二十)Spring Task实现简单定时任务】

目前还没有客户端注册到服务端,所以看不到任何监控的内容,接下来我们创建一个客户端并且注册到服务端后再来看看效果。


Client端配置

这里使用上一章的演示项目——spring-boot-actuator做为客户端。

第一步:引入依赖


<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>2.3.0</version>
</dependency>

第二部:将客户端注册到服务器端,


spring:
boot:
admin:
client:
# 服务端地址
url: http://localhost:7019

效果如下:

【Spring-boot-route(十九)Spring-boot-admin监控服务+(二十)spring-boot-route(二十)Spring Task实现简单定时任务】

为了监控更多的状态信息,我们在客户端引入​​spring-boot-actuator​​依赖。


<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

由于actuator默认只开启了health和info两个web端口,如果想要在server端页面看到所有的监控信息,需要开启其他接口的web端口。


management:
endpoints:
web:
exposure:
include: "*"


现在的效果如下:

【Spring-boot-route(十九)Spring-boot-admin监控服务+(二十)spring-boot-route(二十)Spring Task实现简单定时任务】


spring-boot-admin的应用就简单介绍完了。spring-boot-admin配合spring-boot-actuator实现多服务监控,不仅能提供查看服务监控信息的ui,而且可以监控更加全面的内容。


》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

接下来讲解:

spring-boot-route(二十)Spring Task实现简单定时任务


Spring Task是Spring 3.0自带的定时任务,可以将它看作成一个轻量级的Quartz,功能虽然没有Quartz那样强大,但是使用起来非常简单,无需增加额外的依赖,可直接上手使用。


一 如何实现定时任务


1. 开启定时任务

在启动类上增加​​@EnableScheduling​​注解,开启定时任务


2. 定时任务方法

使用​​@Scheduled​​注解的方法就会被声明成一个定时任务


@Slf4j
@Component
public class ScheduledTest {

@Scheduled(cron = "*/1 * * * * ?")
public void test1(){
log.info("这个定时任务1----");
}
@Scheduled(cron = "*/1 * * * * ?")
public void test2(){
log.info("这个定时任务2----");
}
@Scheduled(cron = "*/1 * * * * ?")
public void test3(){
log.info("这个定时任务3----");
}
}

3. 注册bean

使用​​@Component​​将这个定时任务类注册成一个bean组件,交给Spring容器管理。


二 cron表达式详解

在spring 4.x中已经不支持7个参数的cronin表达式了,要求必须是6个参数。cron表达式格式如下:


{秒} {分} {时} {日期(具体哪天)} {月} {星期}


  • 秒:必填项,允许的值范围是0-59,支持的特殊符号包括, - * /,表示特定的某一秒才会触发任务,-表示一段时间内会触发任务,*表示每一秒都会触发,/表示从哪一个时刻开始,每隔多长时间触发一次任务。
  • 分:必填项,允许的值范围是0-59,支持的特殊符号和秒一样,含义类推
  • 时:必填项,允许的值范围是0-23,支持的特殊符号和秒一样,含义类推
  • 日期:必填项,允许的值范围是1-31,支持的特殊符号相比秒多了?,表示与{星期}互斥,即意味着若明确指定{星期}触发,则表示{日期}无意义,以免引起冲突和混乱。
  • 月:必填项,允许的值范围是1-12(JAN-DEC),支持的特殊符号与秒一样,含义类推
  • 星期:必填项,允许值范围是1~7 (SUN-SAT),1代表星期天(一星期的第一天),以此类推,7代表星期六,支持的符号相比秒多了?,表达的含义是与{日期}互斥,即意味着若明确指定{日期}触发,则表示{星期}无意义。