# 工具
# 心跳包
# 使用中台2.X版本框架
1)、引用心跳包插件(留意脚手架版本)
使用中台2.1.X版本脚手架:
<properties>
<megrez-spring-boot-healthy-beat.version>1.1-SNAPSHOT</megrez-spring-boot-healthy-beat.version>
</properties>
<dependencies>
<!-- 三和运维平台,服务心跳包工具 -->
<dependency>
<groupId>com.hhh.cloud.framework</groupId>
<artifactId>megrez-spring-boot-healthy-beat</artifactId>
<version>${megrez-spring-boot-healthy-beat.version}</version>
</dependency>
</dependencies>
使用中台2.0.X版本脚手架:
<properties>
<megrez-spring-boot-healthy-beat.version>1.0-SNAPSHOT</megrez-spring-boot-healthy-beat.version>
</properties>
<dependencies>
<!-- 三和运维平台,服务心跳包工具 -->
<dependency>
<groupId>com.hhh.cloud.framework</groupId>
<artifactId>megrez-spring-boot-healthy-beat</artifactId>
<version>${megrez-spring-boot-healthy-beat.version}</version>
</dependency>
</dependencies>
2)、属性配置
例子:
# 应用唯一标识,如长沙一体化主管端、企业端分别为两个应用,appId不同,可用中台应用管理生成的应用key作为appId,也可以由应用负责人统一分配。
megrez.heartbeat.app-id=
# 应用名称,如“长沙市建设工程智慧监管系统主管端”,建议使用简称,如“长沙一体化主管端”
megrez.heartbeat.app-name=
# 服务唯一标识,一个应用下有不同的服务,相同的服务在同一个应用下标识相同,如后端总网关服务“hhh-zuul”,服务有多个实例,实例的servicesId相同。
megrez.heartbeat.services-id=hhh-zuul
# 服务名称,如“后端总网关服务”,建议使用简称,如“后端总网关”
megrez.heartbeat.services-name=
# 心跳包接收接口,默认“/sevApi/healthy/healthyItem”,应用接入公有云(建协云)的,不需要配置,只有使用私有云并启用了运维分控的需要变更。
megrez.heartbeat.heartbeat-api=/healthyBeat
# 心跳包接收地址,如果接入公有云(建协云),并已配置“megrez.bridge.client.server-path”,可忽略;如使用私有云并启用了运维分控,需要改为分控暴露的接入地址
megrez.heartbeat.server-path=
# 是否启动健康检查,默认true;false为关闭
megrez.heartbeat.enabled=true
# 是否使用运维分控推送健康包,1:使用分控,2:主动请求运维总控(只有应用使用公有云才有效)
megrez.heartbeat.send-type=1
# 以下是为了能够让属性配置的中文不被读取到乱码,配置前先确认属性配置文件数utf-8,如果不是,删除原配置文件,新建一个utf-8的属性配置。
# 使用nacos可直接配置
server.tomcat.uri-encoding=UTF-8
spring.http.encoding.force=true
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
属性说明:
| 属性 | 说明 |
|---|---|
| megrez.heartbeat.app-id | 必填。应用唯一标识,全运维平台唯一。已接入建协云的项目,应当使用建协云的应用key |
| megrez.heartbeat.services-id | 必填。服务唯一标识,在所属应用(应用唯一标识)中唯一 |
| megrez.heartbeat.app-name | 选填。应用名称,当前服务所属应用名称。实例启动时才推送给运维平台,如果运维平台根据应用唯一标识校验应用是否存在,如已存在不再根据实例推送重命名 |
| megrez.heartbeat.services-name | 选填。服务名称,给当前服务起个名字,方便运维管理。实例启动时才推送给运维平台,如果运维平台根据应用唯一标识校验应用是否存在,如已存在不再根据实例推送重命名 |
| megrez.heartbeat.system-code | 选填。建协云的应用编码,未来可能会和建协云进行联动,建议填写,或在运维平台编辑应用上补充 |
| megrez.heartbeat.server-path | 选填。访问运维平台开放接口地址。如使用中台2.0.1版本框架,已配置“megrez.bridge.client.server-path”可忽略 |
| megrez.heartbeat.service-protected | 选填。1:不保护,2:保护。如果选择不保护,实例超时后会自动从监控状态清除,不再监控;如果选择保护,实例超时后,会一直挂载在监控中,长期告警。默认“1(不保护)”。 |
| megrez.heartbeat.service-ip | 选填。心跳包会默认读取实例所在服务器的ip,如果服务器有多ip,可以指定使用。ip+端口号作为实例的在服务中的唯一标识 |
| megrez.heartbeat.heartbeat-api | 选填。心跳包api。默认“/sevApi/healthy/healthyItem” |
| megrez.heartbeat.enabled | 选填。true:启动,false:关闭。是否启动发送心跳包功能。默认“true” |
# 使用springboot2.1.3或2.3.12版本框架
1)、引用心跳包插件
参考【一、使用中台2.0.1版本框架】
2)、属性配置
参考【一、使用中台2.0.1版本框架】
3)、引用属性配置
在启动类或配置类中配置注解“@EnableScheduling”启动定时任务:
@SpringBootApplication
@EnableScheduling
public class HhhCanaryApiApplication {
public static void main(String[] args) {
SpringApplication.run(HhhCanaryApiApplication.class, args);
}
}
# 其他框架
1)、推送约定
调用接口推送,约定推送方于区间“[10, 30)”秒内推送一次;运维总控采取轮询策略每30秒检查一次服务在线状态。
2)、在实例中实现自行定时调用api接口。
点击前往心跳推送接口
# 任务调度
1)、引用调度核心包插件
<dependencies>
<!-- 三和运维平台,服务调度核心包工具 -->
<dependency>
<groupId>com.hhh.cloud.framework</groupId>
<artifactId>hhh-job-core</artifactId>
<version>2.0.0-SNAPSHOT</version>
</dependency>
</dependencies>
2)、属性配置
例子:
#job服务地址
job.executor.admin-addresses=http://192.169.0.1:10086
job.executor.app-name=test-Service
#访问令牌
job.executor.access-token=
#本地地址
job.executor.address=
job.executor.ip=
job.executor.port=9999
#日志存放路径
job.executor.logpath=/data/applogs/hhh-job/jobhandler
#日志保留时间
job.executor.logretentiondays=30
属性说明:
| 属性 | 说明 |
|---|---|
| job.executor.admin-addresses | 必填。运维分控ip+端口,将服务机注册到分控。 |
| job.executor.app-name | 必填。服务机名称。 |
| job.executor.access-token | 选填。注册服务机的xxl令牌,调用时候用于校验。 |
| job.executor.address | 选填。服务机域名,优先于ip+端口使用。 |
| job.executor.ip | 选填。服务机ip。 |
| job.executor.port | 选填。服务机端口。 |
| job.executor.logpath | 选填。调度日志存放路径。 |
| job.executor.logretentiondays | 选填。日志保存天数。 |
3)、添加配置类:
@Data
@ConfigurationProperties(prefix = "job.executor")
public class JobHandlerProperties {
private String appName; //本服务名称
private String accessToken; //访问token
private String adminAddresses; //访问地址
private String address; //本服务地址
private String ip; //ip
private int port; //端口
private String logPath; //日志路径
private int logRetentionDays; //日志保留时间
}
@EnableConfigurationProperties(JobHandlerProperties.class)
@Configuration
public class HhhJobConfig {
private final static Logger logger = LoggerFactory.getLogger(HhhJobConfig.class);
private JobHandlerProperties jobHandlerProperties;
public HhhJobConfig(JobHandlerProperties jobHandlerProperties) {
this.jobHandlerProperties = jobHandlerProperties;
}
@Bean(initMethod = "start", destroyMethod = "destroy")
public JobSpringExecutor xxlJobExecutor() {
logger.info(">>>>>>>>>>> hhh-job config init.");
JobSpringExecutor jobSpringExecutor = new JobSpringExecutor();
jobSpringExecutor.setAdminAddresses(jobHandlerProperties.getAdminAddresses());
jobSpringExecutor.setAppname(jobHandlerProperties.getAppName());
jobSpringExecutor.setAddress(jobHandlerProperties.getAddress());
jobSpringExecutor.setIp(jobHandlerProperties.getIp());
jobSpringExecutor.setPort(jobHandlerProperties.getPort());
jobSpringExecutor.setAccessToken(jobHandlerProperties.getAccessToken());
jobSpringExecutor.setLogPath(jobHandlerProperties.getLogPath());
jobSpringExecutor.setLogRetentionDays(jobHandlerProperties.getLogRetentionDays());
return jobSpringExecutor;
}
}
# 任务调度的基本使用
5)、代码添加注解,写业务代码
@Component
@EnableAsync
public class TestHandle {
@HhhJob("testHandle")
public ReturnT testHandle(String params){
System.out.println("测试任务调度");
return ReturnT.SUCCESS;
}
}
5)、打开运维分控页面,添加执行器

6)、添加任务

7)、检查corn表达式,启动任务
