<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-health-check</artifactId>
<version>5.0.1</version>
</dependency>
Vert.x 健康检查
此组件提供了一种计算健康检查的简单方法。健康检查用于以非常简单的术语表达应用程序的当前状态:UP 或 DOWN。
使用 Vert.x 健康检查
添加以下依赖项
-
Maven(在您的
pom.xml
中)
-
Gradle(在您的
build.gradle
文件中)
compile 'io.vertx:vertx-health-check:5.0.1'
创建健康检查对象。
核心对象是 HealthChecks
。您可以使用以下方式创建一个新实例:
HealthChecks hc = HealthChecks.create(vertx);
hc.register(
"my-procedure",
promise -> promise.complete(Status.OK()));
// Register with a timeout. The check fails if it does not complete in time.
// The timeout is given in ms.
hc.register(
"my-procedure",
2000,
promise -> promise.complete(Status.OK()));
创建此对象后,您可以注册和注销过程。
过程
当您注册过程时,您会提供一个名称和执行检查的函数(处理程序)。
推断状态的规则如下:
Status
还可以提供额外的数据。
healthChecks.register("my-procedure-name", promise -> {
// Status can provide additional data provided as JSON
promise.complete(Status.OK(new JsonObject().put("available-memory", "2mb")));
});
healthChecks.register("my-second-procedure-name", promise -> {
promise.complete(Status.KO(new JsonObject().put("load", 99)));
});
过程可以分组。过程名称指示组(由 /
分隔)。过程以树状结构组织。
healthChecks.register("a-group/my-procedure-name", promise -> {
//....
});
// Groups can contain other groups
healthChecks.register("a-group/a-second-group/my-second-procedure-name", promise -> {
//....
});
过程示例
本节提供常见健康检查的示例。
SQL 客户端
此检查报告是否可以建立到数据库的连接。
healthChecks.register("database", promise ->
pool.getConnection()
.compose(SqlConnection::close)
.<Status>mapEmpty()
.onComplete(promise)
);
事件总线
此检查报告事件总线上是否有消费者准备就绪。在本例中,协议是一个简单的 ping/pong,但可以更复杂。此检查可用于检查 verticle 是否准备就绪,如果它正在监听特定的事件地址。
healthChecks.register("receiver", promise ->
vertx.eventBus().request("health", "ping")
.onSuccess(msg -> {
promise.complete(Status.OK());
})
.onFailure(err -> {
promise.complete(Status.KO());
})
);
在事件总线上暴露健康检查
虽然使用 Vert.x Web 处理程序通过 HTTP 暴露健康检查很方便,但以不同方式暴露数据可能很有用。本节提供一个在事件总线上暴露数据的示例。
vertx.eventBus().consumer("health", message ->
healthChecks.checkStatus()
.onSuccess(message::reply)
.onFailure(err -> message.fail(0, err.getMessage()))
);