我的应用程序有很多异步 (cron
) 进程,并且它们在 Jersey 中都有各自的 binder
类。这些进程通过独立的脚本启动和管理。
现在,如果我对这些进程使用的类进行更改(例如,在类中添加依赖项)并且无意中忘记更新 binder
类,这些进程仍会启动但失败并显示 {{ 1}}(这是预期的)。但是,这并没有停止节点上的进程,监控工具仍然认为进程运行良好。
我希望在这些流程中实施健康检查,以便我可以查看该流程在部署后是否正常运行,并且能够在没有任何依赖项错误的情况下启动。我正在探索以下选项:
org.glassfish.hk2.api.UnsatisfiedDependencyException
健康状态导出到监控系统(例如 prometheus)的异步轻量级进程ServiceLocator
状态返回响应的 API 端点我有几个问题:
ServiceLocator
中是否有一种本地方式可以做到这一点?Jersey HK2
)?答案 0 :(得分:1)
在 hk2 中有一个名为 ErrorService 的特殊服务,您可以使用它来查看创建服务是否失败。由于 hk2 是一个动态框架,因此在有人尝试创建失败的服务之前,不会调用此错误服务实现。
您可能还想认真研究 hk2 的自动绑定选项。使一切变得更容易 IMO。请参阅有关 Automatic Service Population
的部分以下是使用 ErrorService 的示例:
@Service
public class ExampleErrorService implements ErrorService {
@Override
public void onFailure(ErrorInformation ei) throws MultiException {
if (ErrorType.SERVICE_CREATION_FAILURE.equals(ei.getErrorType())) {
// Tell your health check service there was an exception
return;
}
// Maybe log other failures?
}
}