提交 83a0b1cd 作者: 方治民

feat: 新增 health 健康状态检测接口

上级 cef39b03
/* (C) 2024 YiRing, Inc. */
package com.yiring.app.web.common;
import cn.dev33.satoken.annotation.SaIgnore;
import com.alibaba.fastjson2.JSONObject;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.yiring.auth.domain.user.UserRepository;
import com.yiring.common.core.Minio;
import com.yiring.common.core.Redis;
import com.yiring.common.core.Result;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.ApplicationContext;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author Jim
*/
@Slf4j
@Validated
@ApiSupport(order = 0)
@Tag(name = "健康指标", description = "Health")
@RequestMapping("/")
@RestController
@RequiredArgsConstructor
public class HealthController {
final ApplicationContext applicationContext;
final Redis redis;
final Minio minio;
final UserRepository userRepository;
@SaIgnore
@Operation(summary = "健康检查")
@GetMapping("health")
public Result<JSONObject> health(HttpServletResponse response) {
JSONObject data = new JSONObject();
boolean health = true;
// Redis
try {
redis.info();
data.put("redis", "up");
} catch (Exception e) {
data.put("redis", "down");
health = false;
}
// Database
try {
userRepository.count();
data.put("database", "up");
} catch (Exception e) {
data.put("database", "down");
health = false;
}
// MinIO
try {
boolean result = minio.isValid();
data.put("minio", result ? "up" : "down");
} catch (Exception e) {
data.put("minio", "down");
health = false;
}
// // RabbitMQ
// try {
// rabbitTemplate.send(new Message("health".getBytes()));
// data.put("rabbitmq", "up");
// } catch (Exception e) {
// data.put("rabbitmq", "down");
// health = false;
// }
if (!health) {
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
}
return Result.ok(data);
}
}
/**
* 公共接口
*
* @author Jim
* @version 0.1
* 2022/6/22 11:30
*/
package com.yiring.app.web.common;
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论