You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Akka服务健康检查配置:Kafka集群或数据库断开时如何标记为不健康?

Akka服务健康检查配置调整方案

要让Akka服务在Kafka集群或数据库连接断开时,通过/ready和/alive端点上报不健康状态,可通过以下配置及自定义实现完成:

1. 启用Akka Management健康检查基础配置

先开启Akka Management健康检查模块,并绑定到指定端点:

akka.management {
  enabled = true
  health-checks {
    enabled = true
    readiness-endpoint = "/ready"
    liveness-endpoint = "/alive"
  }
}

2. 添加Kafka连接健康检查

若使用Akka Kafka客户端,可直接启用其内置健康检查,自动检测Kafka集群连接状态:

akka.kafka.consumer {
  health-check {
    enabled = true
    readiness-check {
      enabled = true
      # 检查是否成功连接到Kafka集群
      connected = true
      # 可选:检查消费者是否已分配到分区(按需启用)
      partitions-assigned = true
    }
    # 如需将Kafka检查纳入存活检查,添加以下配置
    liveness-check {
      enabled = true
      connected = true
    }
  }
}

当Kafka连接断开时,该检查会失败,触发健康端点返回不健康状态。

3. 添加数据库连接健康检查

针对数据库连接,需自定义健康检查实现,并配置到Akka健康检查列表中:

3.1 配置自定义检查类

akka.management.health-checks.checks {
  database-connection = "com.yourproject.health.DbConnectionHealthCheck"
}

3.2 实现健康检查类

创建DbConnectionHealthCheck类,实现Akka的HealthCheck接口,通过简单查询验证数据库连接可用性:

import akka.management.healthchecks.HealthCheck;
import scala.concurrent.Future;
import scala.concurrent.Promise;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.Statement;

public class DbConnectionHealthCheck implements HealthCheck {
    private final DataSource dataSource;

    public DbConnectionHealthCheck(DataSource dataSource) {
        this.dataSource = dataSource;
    }

    @Override
    public Future<Boolean> check() {
        Promise<Boolean> promise = Promise.apply();
        try (Connection conn = dataSource.getConnection();
             Statement stmt = conn.createStatement()) {
            stmt.executeQuery("SELECT 1");
            promise.success(true);
        } catch (Exception e) {
            promise.success(false);
        }
        return promise.future();
    }
}

当数据库连接失败时,该类返回false,触发健康端点上报不健康。

4. 验证效果

配置完成后,若Kafka集群断开或数据库连接失败,/ready和/alive端点会返回503 Service Unavailable;连接恢复后自动回到200 OK。

内容的提问来源于stack exchange,提问作者Akshay Jain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 05:30:43