Interface IEventHealthCheck
public interface IEventHealthCheck
事件总线健康检查接口
提供事件总线系统的健康状态监控功能,包括同步/异步健康检查、 快速状态查询、历史记录查询等。用于监控事件总线的运行状况, 及时发现和诊断系统问题。
- Since:
- 1.0.0
- Version:
- 1.0.0
- Author:
- Berry_so
- See Also:
-
Method Summary
Modifier and TypeMethodDescription获取健康检查历史记录获取最后一次健康检查结果booleanisHealthyForDuration(int minutes) 检查系统是否在指定时间段内持续健康执行完整的健康检查异步执行完整的健康检查快速健康检查
-
Method Details
-
performHealthCheck
HealthCheckResult performHealthCheck()执行完整的健康检查执行全面的系统健康检查,包括:
- 线程池状态(活跃线程、队列大小、拒绝任务数)
- 内存使用情况(堆内存、非堆内存)
- 事件处理器统计(总数、异常数、超时数)
- 事件队列状态(待处理事件数、积压情况)
- 性能指标(平均处理时间、TPS)
注意:此方法可能耗时较长(通常 100-500ms), 建议在专门的监控线程中调用,或使用
performHealthCheckAsync()异步执行。- Returns:
- 包含详细健康检查结果的对象
-
performHealthCheckAsync
CompletableFuture<HealthCheckResult> performHealthCheckAsync()异步执行完整的健康检查在独立的线程中执行健康检查,不会阻塞调用线程。 适用于需要定期进行健康检查但不希望影响主线程性能的场景。
使用示例:
healthCheck.performHealthCheckAsync() .thenAccept(result -> { if (result.getStatus() == HealthStatus.UNHEALTHY) { logger.warn("系统健康状态异常: {}", result.getMessage()); // 触发告警或自动修复 } }) .exceptionally(ex -> { logger.error("健康检查执行失败", ex); return null; });- Returns:
- 包含健康检查结果的 CompletableFuture
-
quickHealthCheck
HealthStatus quickHealthCheck()快速健康检查执行轻量级的健康状态检查,仅返回当前系统的整体健康状态, 不包含详细的诊断信息。执行时间通常在 1-10ms 内。
适用于:
- 高频率的健康状态轮询(如每秒多次)
- 负载均衡器的健康探测
- 快速判断是否需要执行完整健康检查
检查项包括:
- 线程池是否存活
- 是否有大量积压任务
- 是否有致命错误
- Returns:
- 当前健康状态(HEALTHY、DEGRADED 或 UNHEALTHY)
-
getHealthHistory
List<HealthCheckResult> getHealthHistory()获取健康检查历史记录返回最近的健康检查结果列表,按时间倒序排列(最新的在前)。 历史记录的保留数量和时长取决于配置。
用途:
- 分析系统健康趋势
- 定位问题发生的时间点
- 生成健康报告
- 可视化监控面板数据源
- Returns:
- 健康检查历史记录列表,如果没有历史记录则返回空列表
-
getLastHealthCheck
Optional<HealthCheckResult> getLastHealthCheck()获取最后一次健康检查结果返回最近一次执行的健康检查结果,无论是通过
performHealthCheck()还是performHealthCheckAsync()执行的。如果从未执行过健康检查,返回
Optional.empty()。- Returns:
- 包含最后一次健康检查结果的 Optional,如果没有则为空
-
isHealthyForDuration
boolean isHealthyForDuration(int minutes) 检查系统是否在指定时间段内持续健康检查过去指定分钟数内的所有健康检查记录,判断系统是否持续保持健康状态。
判断标准:
- 所有检查记录的状态都是
HealthStatus.HEALTHY - 或者没有
HealthStatus状态 - 如果时间段内没有健康检查记录,返回 false
使用场景:
- 判断是否可以安全地执行维护操作
- 服务就绪检查
- 自动化运维决策依据
- Parameters:
minutes- 检查的时间范围(分钟),必须大于 0- Returns:
- 如果在指定时间段内持续健康则返回 true,否则返回 false
- Throws:
IllegalArgumentException- 如果 minutes 小于等于 0
- 所有检查记录的状态都是
-