Interface IEventHealthCheck


public interface IEventHealthCheck
事件总线健康检查接口

提供事件总线系统的健康状态监控功能,包括同步/异步健康检查、 快速状态查询、历史记录查询等。用于监控事件总线的运行状况, 及时发现和诊断系统问题。

Since:
1.0.0
Version:
1.0.0
Author:
Berry_so
See Also:
  • 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)
      检查系统是否在指定时间段内持续健康

      检查过去指定分钟数内的所有健康检查记录,判断系统是否持续保持健康状态。

      判断标准:

      使用场景:

      • 判断是否可以安全地执行维护操作
      • 服务就绪检查
      • 自动化运维决策依据
      Parameters:
      minutes - 检查的时间范围(分钟),必须大于 0
      Returns:
      如果在指定时间段内持续健康则返回 true,否则返回 false
      Throws:
      IllegalArgumentException - 如果 minutes 小于等于 0