java类com.codahale.metrics.health.HealthCheck的实例源码

HealthCheckResource.java 文件源码 项目:abhot 阅读 28 收藏 0 点赞 0 评论 0
/**
 Health check

 @return 204 if healthy otherwise 500
 */
@GET
@Produces(MediaType.APPLICATION_JSON + "; charset=UTF-8")
@Path("check")
public Response check()
{
    for (HealthStatus healthCheck : m_healthCheckService.getChecks())
    {
        HealthCheck.Result result = healthCheck.execute();
        if (!result.isHealthy())
        {
            return setHeaders(Response.status(Response.Status.INTERNAL_SERVER_ERROR)).build();
        }
    }

    return setHeaders(Response.status(m_healthyResponse)).build();
}
AdminHandlers.java 文件源码 项目:xrpc 阅读 20 收藏 0 点赞 0 评论 0
public static Handler healthCheckHandler(
    HealthCheckRegistry healthCheckRegistry, ObjectMapper mapper) {
  Preconditions.checkState(healthCheckRegistry != null);
  Preconditions.checkState(mapper != null);

  SortedMap<String, HealthCheck.Result> healthChecks = healthCheckRegistry.runHealthChecks();

  return xrpcRequest ->
      Recipes.newResponseOk(
          xrpcRequest
              .getAlloc()
              .directBuffer()
              .writeBytes(
                  mapper.writerWithDefaultPrettyPrinter().writeValueAsBytes(healthChecks)),
          Recipes.ContentType.Application_Json);
}
Router.java 文件源码 项目:xrpc 阅读 27 收藏 0 点赞 0 评论 0
public void scheduleHealthChecks(
    EventLoopGroup workerGroup, int initialDelay, int delay, TimeUnit timeUnit) {

  for (Map.Entry<String, HealthCheck> entry : healthCheckMap.entrySet()) {
    healthCheckRegistry.register(entry.getKey(), entry.getValue());
  }

  workerGroup.scheduleWithFixedDelay(
      new Runnable() {
        @Override
        public void run() {
          healthCheckRegistry.runHealthChecks(workerGroup);
        }
      },
      initialDelay,
      delay,
      timeUnit);
}
HBaseConnection.java 文件源码 项目:stroom-stats 阅读 29 收藏 0 点赞 0 评论 0
@Override
public HealthCheck.Result getHealth() {
    try {
        HBaseAdmin.checkHBaseAvailable(configuration);

        return HealthCheck.Result.builder()
                .healthy()
                .withMessage("HBase running on:")
                .withDetail("quorum", quorum)
                .withDetail("clientPort", clientPort)
                .withDetail("znodeParent", znodeParent)
                .build();
    } catch (Exception e) {
        return HealthCheck.Result.builder()
                .unhealthy(e)
                .build();
    }
}
StatisticsAggregationService.java 文件源码 项目:stroom-stats 阅读 23 收藏 0 点赞 0 评论 0
@Override
public HealthCheck.Result getHealth() {
    HealthCheck.ResultBuilder builder = HealthCheck.Result.builder();
    long nonRunningProcessorCount = processors.stream()
            .filter(processor -> !processor.getRunState().equals(RunState.RUNNING))
            .count();
    if (!runState.equals(RunState.RUNNING) || nonRunningProcessorCount > 0) {
        builder.unhealthy();
    } else {
        builder.healthy();
    }
    builder.withDetail("runState", runState.name());
    builder.withDetail("processorCount", processors.size());
    builder.withDetail("processors", processors.stream()
            .collect(HasHealthCheck.buildTreeMapCollector(
                    StatisticsAggregationProcessor::getName,
                    StatisticsAggregationProcessor::produceHealthCheckSummary)));

    return builder.build();
}
StatisticsAggregationProcessor.java 文件源码 项目:stroom-stats 阅读 20 收藏 0 点赞 0 评论 0
@Override
public HealthCheck.Result getHealth() {
    switch (runState) {
        case RUNNING:
            return HealthCheck.Result.builder()
                    .healthy()
                    .withMessage(runState.toString())
                    .withDetail("status", produceHealthCheckSummary())
                    .build();
        default:
            return HealthCheck.Result.builder()
                    .unhealthy()
                    .withMessage(runState.toString())
                    .withDetail("status", produceHealthCheckSummary())
                    .build();
    }
}
StatisticsFlatMappingService.java 文件源码 项目:stroom-stats 阅读 21 收藏 0 点赞 0 评论 0
@Override
public HealthCheck.Result getHealth() {
    HealthCheck.ResultBuilder builder = HealthCheck.Result.builder();
    long nonRunningProcessorCount = processors.stream()
            .filter(processor -> !processor.getRunState().equals(RunState.RUNNING))
            .count();
    if (!runState.equals(RunState.RUNNING) || nonRunningProcessorCount > 0) {
        builder.unhealthy();
    } else {
        builder.healthy();
    }
    builder.withDetail("runState", runState.name());
    builder.withDetail("processorCount", processors.size());
    builder.withDetail("processors", processors.stream()
            .collect(HasHealthCheck.buildTreeMapCollector(
                    StatisticsFlatMappingProcessor::getName,
                    StatisticsFlatMappingProcessor::produceHealthCheckSummary)));

    return builder.build();
}
StroomPropertyServiceHealthCheck.java 文件源码 项目:stroom-stats 阅读 21 收藏 0 点赞 0 评论 0
@Override
public HealthCheck.Result getHealth() {
    if (stroomPropertyService == null) {
        return HealthCheck.Result.unhealthy("stroomPropertyService has not been initialised");
    } else {

        try {
            //use a treeMap so the props are sorted on output
            return HealthCheck.Result.builder()
                    .withMessage("Available")
                    .withDetail("properties", new TreeMap<>(stroomPropertyService.getAllProperties()))
                    .build();

        } catch (Exception e) {
            return HealthCheck.Result.unhealthy(e);
        }
    }
}
JobManager.java 文件源码 项目:jobson 阅读 28 收藏 0 点赞 0 评论 0
public Map<String, HealthCheck> getHealthChecks() {
    return Collections.singletonMap(
            JOB_MANAGER_JOB_QUEUE_OVERFLOW_HEALTHCHECK,
            new HealthCheck() {
                @Override
                protected Result check() throws Exception {
                    final int queueSize = jobQueue.size();
                    if (queueSize < JOB_MANAGER_MAX_JOB_QUEUE_OVERFLOW_THRESHOLD) {
                        return Result.healthy(format("Queue contains %s entries", queueSize));
                    } else {
                        return Result.unhealthy(format(
                                "%s entries in job queue: this exceeds the warning threshold (%s)",
                                queueSize,
                                JOB_MANAGER_MAX_JOB_QUEUE_OVERFLOW_THRESHOLD));
                    }
                }
            });
}
JobManagerTest.java 文件源码 项目:jobson 阅读 30 收藏 0 点赞 0 评论 0
@Test
public void testGetHealthChecksReturnsAHealthCheckForJobQueueOverflowing() {
    final CancelablePromise<JobExecutionResult> executorPromise = new SimpleCancelablePromise<>();
    final JobManager jobManager = createManagerWith(MockJobExecutor.thatUses(executorPromise));
    final Map<String, HealthCheck> healthChecks = jobManager.getHealthChecks();

    assertThat(healthChecks).containsKeys(JOB_MANAGER_JOB_QUEUE_OVERFLOW_HEALTHCHECK);
    assertThat(healthChecks.get(JOB_MANAGER_JOB_QUEUE_OVERFLOW_HEALTHCHECK)).isNotNull();

    final HealthCheck jobQueueHealthCheck = healthChecks.get(JOB_MANAGER_JOB_QUEUE_OVERFLOW_HEALTHCHECK);

    assertThat(jobQueueHealthCheck.execute().isHealthy());

    for(int i = 0; i < JOB_MANAGER_MAX_JOB_QUEUE_OVERFLOW_THRESHOLD * 2; i++) {
        // These won't finish because we never resolve the promise
        jobManager.submit(STANDARD_VALID_REQUEST);
    }

    assertThat(jobQueueHealthCheck.execute().isHealthy()).isFalse();
}
KafkaHealthCheckTest.java 文件源码 项目:trellis-rosid 阅读 20 收藏 0 点赞 0 评论 0
@Test
public void testZkHealth() throws Exception {

    final CuratorFramework client = newClient(zk.getConnectString(), new RetryOneTime(100));
    client.start();
    client.blockUntilConnected();

    final HealthCheck check = new KafkaHealthCheck(client);
    final HealthCheck.Result res = check.execute();
    assertFalse(res.isHealthy());
    assertTrue(res.getMessage().contains("Error fetching kafka broker list"));

    client.createContainers("/brokers/ids");

    final HealthCheck.Result res2 = check.execute();
    assertFalse(res2.isHealthy());
    assertEquals("No Kafka brokers are connected.", res2.getMessage());

    client.createContainers("/brokers/ids/1");

    final HealthCheck.Result res3 = check.execute();
    assertTrue(res3.isHealthy());
}
ZookeeperHealthCheckTest.java 文件源码 项目:trellis-rosid 阅读 24 收藏 0 点赞 0 评论 0
@Test
public void testZkHealth() throws Exception {
    final CuratorFramework client = newClient(zk.getConnectString(), new RetryOneTime(100));
    client.start();
    client.blockUntilConnected();

    final HealthCheck check = new ZookeeperHealthCheck(client);
    final HealthCheck.Result res = check.execute();
    assertFalse(res.isHealthy());
    assertEquals("Zookeeper not properly initialized", res.getMessage());

    client.createContainers(ZNODE_COORDINATION);

    final HealthCheck.Result res2 = check.execute();
    assertTrue(res2.isHealthy());
}
HealthCheckResource.java 文件源码 项目:abhot 阅读 27 收藏 0 点赞 0 评论 0
/**
 Returns the status of each health check.

 @return 200
 */
@GET
@Produces(MediaType.APPLICATION_JSON + "; charset=UTF-8")
@Path("status")
public Response status()
{
    List<String> messages = new ArrayList<String>();
    for (HealthStatus healthCheck : m_healthCheckService.getChecks())
    {
        HealthCheck.Result result = healthCheck.execute();
        if (result.isHealthy())
        {
            messages.add(healthCheck.getName() + ": OK");
        }
        else
        {
            messages.add(healthCheck.getName() + ": FAIL");
        }
    }

    GenericEntity<List<String>> entity = new GenericEntity<List<String>>(messages)
    {
    };
    return setHeaders(Response.ok(entity)).build();
}
HealthChecksServer.java 文件源码 项目:StubbornJava 阅读 20 收藏 0 点赞 0 评论 0
public static void main(String[] args) {
    /*
     *  Init connection pools. They auto register their own health checks.
     */
    ConnectionPools.getProcessing();
    ConnectionPools.getTransactional();

    // Assume some global HttpClient.
    OkHttpClient client = new OkHttpClient.Builder().build();

    HttpUrl passingPath = HttpUrl.parse("http://localhost:8080/ping");
    HealthCheck passing = new ExternalServiceHealthCheck(client, passingPath);
    HealthChecks.getHealthCheckRegistry().register("ping", passing);

    // Since this route doesn't exist it will respond with 404 and should fail the check.
    HttpUrl failingPath = HttpUrl.parse("http://localhost:8080/failingPath");
    HealthCheck failing = new ExternalServiceHealthCheck(client, failingPath);
    HealthChecks.getHealthCheckRegistry().register("shouldFail", failing);

    // Once again pull in a bunch of common middleware.
    SimpleServer server = SimpleServer.simpleServer(Middleware.common(ROUTES));
    server.start();
}
MetricsPresenter.java 文件源码 项目:ugc-bot-redux 阅读 26 收藏 0 点赞 0 评论 0
private String healthCheckCommand(IMessage message, OptionSet optionSet) {
    StringBuilder response = new StringBuilder();
    if (healthCheckRegistry.getNames().isEmpty()) {
        return "No health checks registered";
    }
    Map<String, HealthCheck.Result> resultMap = healthCheckRegistry.runHealthChecks();
    response.append("*Health check results*\n");
    for (Map.Entry<String, HealthCheck.Result> entry : resultMap.entrySet()) {
        HealthCheck.Result result = entry.getValue();
        String msg = result.getMessage();
        Throwable t = result.getError();
        response.append(result.isHealthy() ? "[Healthy]" : "[Caution]")
            .append(" **").append(entry.getKey()).append("** ")
            .append(msg != null ? msg : "")
            .append(t != null ? " and exception: *" + t.getMessage() + "*" : "").append("\n");
    }
    return response.toString();
}
MetricsService.java 文件源码 项目:ugc-bot-redux 阅读 29 收藏 0 点赞 0 评论 0
private void initDiscordHealthChecks() {
    healthCheckRegistry.register(MetricNames.HEALTH_DISCORD_WS, new HealthCheck() {
        @Override
        protected Result check() throws Exception {
            Counter restartCounter = metricRegistry.counter(MetricNames.DISCORD_WS_RESTARTS);
            Optional<Incident> incident = incidentService.getLastIncidentFromGroup(IncidentService.DISCORD_RESTART);
            ZonedDateTime time = incident.isPresent() ? incident.get().getCreatedDate() : null;
            String reason = incident.isPresent() ? incident.get().getName() : null;
            long restarts = restartCounter.getCount();
            if (restarts > 0) {
                return Result.unhealthy(String.format("%d restart%s, last one on %s (%s)",
                    restarts, restarts == 1 ? "" : "s", time, reason));
            } else {
                return Result.healthy("OK");
            }
        }
    });
}
HealthCheckResource.java 文件源码 项目:pay-adminusers 阅读 28 收藏 0 点赞 0 评论 0
@GET
@Path(HEALTHCHECK)
@Produces(APPLICATION_JSON)
public Response healthCheck() throws JsonProcessingException {
    SortedMap<String, HealthCheck.Result> results = environment.healthChecks().runHealthChecks();

    Map<String, Map<String, Object>> response = getResponse(results);

    boolean healthy = results.size() == results.values()
            .stream()
            .filter(HealthCheck.Result::isHealthy)
            .count();

    if(healthy) {
        return Response.ok().entity(response).build();
    }
    return status(503).entity(response).build();
}
SessionFactoryHealthCheckTest.java 文件源码 项目:CredentialStorageService-dw-hibernate 阅读 20 收藏 0 点赞 0 评论 0
@Test
public void isHealthyIfNoExceptionIsThrown() throws Exception {
    final Session session = mock(Session.class);
    when(this.factory.openSession()).thenReturn(session);

    final Transaction transaction = mock(Transaction.class);
    when(session.beginTransaction()).thenReturn(transaction);

    final SQLQuery query = mock(SQLQuery.class);
    when(session.createSQLQuery(anyString())).thenReturn(query);

    assertThat(this.healthCheck.execute())
            .isEqualTo(HealthCheck.Result.healthy());

    final InOrder inOrder = inOrder(this.factory, session, transaction, query);
    inOrder.verify(this.factory).openSession();
    inOrder.verify(session).beginTransaction();
    inOrder.verify(session).createSQLQuery("SELECT 1");
    inOrder.verify(query).list();
    inOrder.verify(transaction).commit();
    inOrder.verify(session).close();
}
CasBlobStoreTest.java 文件源码 项目:emodb 阅读 29 收藏 0 点赞 0 评论 0
@Test
public void testHealthCheck() throws Exception {
    ArgumentCaptor<HealthCheck> captor = ArgumentCaptor.forClass(HealthCheck.class);
    verify(_healthChecks, atLeastOnce()).addHealthCheck(Matchers.anyString(), captor.capture());
    List<HealthCheck> healthChecks = captor.getAllValues();

    int numCassandraHealthChecks = 0;
    for (HealthCheck healthCheck : healthChecks) {
        if (healthCheck instanceof CassandraHealthCheck) {
            HealthCheck.Result result = healthCheck.execute();
            assertTrue(result.isHealthy(), result.getMessage());
            numCassandraHealthChecks++;
        }
    }
    assertEquals(numCassandraHealthChecks, 3);  // app, ugc, media
}
CasDatabusTest.java 文件源码 项目:emodb 阅读 23 收藏 0 点赞 0 评论 0
@Test
public void testHealthCheck() throws Exception {
    ArgumentCaptor<HealthCheck> captor = ArgumentCaptor.forClass(HealthCheck.class);
    verify(_healthChecks, atLeastOnce()).addHealthCheck(Matchers.anyString(), captor.capture());
    List<HealthCheck> healthChecks = captor.getAllValues();

    int numCassandraHealthChecks = 0;
    for (HealthCheck healthCheck : healthChecks) {
        if (healthCheck instanceof CassandraHealthCheck) {
            HealthCheck.Result result = healthCheck.execute();
            assertTrue(result.isHealthy(), result.getMessage());
            numCassandraHealthChecks++;
        }
    }
    assertEquals(numCassandraHealthChecks, 3);  // app, ugc, databus
}
CasDataStoreTest.java 文件源码 项目:emodb 阅读 19 收藏 0 点赞 0 评论 0
@Test
public void testHealthCheck() throws Exception {
    ArgumentCaptor<HealthCheck> captor = ArgumentCaptor.forClass(HealthCheck.class);
    verify(_healthChecks, atLeastOnce()).addHealthCheck(Matchers.anyString(), captor.capture());
    List<HealthCheck> healthChecks = captor.getAllValues();

    int numCassandraHealthChecks = 0;
    for (HealthCheck healthCheck : healthChecks) {
        if (healthCheck instanceof CassandraHealthCheck) {
            HealthCheck.Result result = healthCheck.execute();
            assertTrue(result.isHealthy(), result.getMessage());
            numCassandraHealthChecks++;
        }
    }
    assertEquals(numCassandraHealthChecks, 2);  // app, ugc
}
HealthCheckResource.java 文件源码 项目:pay-cardid 阅读 27 收藏 0 点赞 0 评论 0
@GET
@Path(HEALTHCHECK)
@Produces(APPLICATION_JSON)
public Response healthCheck() throws JsonProcessingException {
    SortedMap<String, HealthCheck.Result> results = environment.healthChecks().runHealthChecks();

    Map<String, Map<String, Boolean>> response = getResponse(results);

    boolean healthy = results.size() == results.values()
            .stream()
            .filter(HealthCheck.Result::isHealthy)
            .count();

    if(healthy) {
        return Response.ok().entity(response).build();
    }
    return status(503).entity(response).build();
}
HK2Bundle.java 文件源码 项目:dropwizard-hk2bundle 阅读 26 收藏 0 点赞 0 评论 0
@Override
public void run(Environment environment) {
    ServiceLocatorUtilities.bind(serviceLocator, new EnvBinder(application, environment));

    LifecycleEnvironment lifecycle = environment.lifecycle();
    AdminEnvironment admin = environment.admin();

    listServices(HealthCheck.class).forEach(healthCheck -> {
        String name = healthCheck.getClass().getSimpleName();
        environment.healthChecks().register(name, healthCheck);
    });

    listServices(Managed.class).forEach(lifecycle::manage);
    listServices(LifeCycle.class).forEach(lifecycle::manage);
    listServices(LifeCycle.Listener.class).forEach(lifecycle::addLifeCycleListener);
    listServices(ServerLifecycleListener.class).forEach(lifecycle::addServerLifecycleListener);
    listServices(Task.class).forEach(admin::addTask);

    environment.jersey().register(HK2LifecycleListener.class);

    //Set service locator as parent for Jersey's service locator
    environment.getApplicationContext().setAttribute(ServletProperties.SERVICE_LOCATOR, serviceLocator);
    environment.getAdminContext().setAttribute(ServletProperties.SERVICE_LOCATOR, serviceLocator);

    serviceLocator.inject(application);
}
MonitoringCenterServlet.java 文件源码 项目:monitoring-center 阅读 29 收藏 0 点赞 0 评论 0
private void handleHealthChecks(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException {
    String healthCheckName = null;
    String path = httpServletRequest.getPathInfo();
    if (StringUtils.isNotBlank(path)) {
        String noLeadingSlash = path.substring(1);
        int indexOfSlash = noLeadingSlash.indexOf("/");
        if (indexOfSlash != -1) {
            healthCheckName = noLeadingSlash.substring(indexOfSlash + 1);
        }
    }

    if (StringUtils.isNotBlank(healthCheckName)) {
        try {
            HealthCheck.Result result = MonitoringCenter.runHealthCheck(healthCheckName);
            writeAsJson(httpServletRequest, httpServletResponse, result);
        } catch (NoSuchElementException e) {
            httpServletResponse.sendError(HttpServletResponse.SC_NOT_FOUND);
            return;
        }
    } else {
        SortedMap<String, HealthCheck.Result> healthCheckResultsByNames = MonitoringCenter.runHealthChecks();
        writeAsJson(httpServletRequest, httpServletResponse, healthCheckResultsByNames);
    }
}
MonitoringCenterTest.java 文件源码 项目:monitoring-center 阅读 21 收藏 0 点赞 0 评论 0
@Test
public void runHealthCheck() throws Exception {
    final boolean isOk = new Date().getTime() % 2 == 0;

    MonitoringCenter.registerHealthCheck("HealthCheckTest1", new HealthCheck() {
        @Override
        protected Result check() throws Exception {
            if (!isOk) {
                return Result.unhealthy("This second is not even!");
            }

            return Result.healthy("Even!");
        }
    });

    HealthCheck.Result healthCheck = MonitoringCenter.runHealthCheck("HealthCheckTest1HealthCheck");
    if (healthCheck.isHealthy()) {
        Assert.assertEquals("Even!", healthCheck.getMessage());
    } else {
        Assert.assertEquals("This second is not even!", healthCheck.getMessage());
    }
    MonitoringCenter.removeAllHealthChecks();
}
InstrumentingInterceptorTest.java 文件源码 项目:instrumentor 阅读 22 收藏 0 点赞 0 评论 0
@Test
public void testTimerStopsOnceOnException() throws Exception {
    when(metricRegistry.timer(NAME_METHOD)).thenReturn(timer);
    when(metricRegistry.meter(NAME_METHOD + ".errors")).thenReturn(errorMeter);
    when(metricRegistry.counter(NAME_METHOD + ".inFlight")).thenReturn(counter);

    when(timer.time()).thenReturn(context);

    try {
        methodTestStub.faultyMethod();
    } catch (RuntimeException ignored) {}

    verify(healtchCheckRegistry, times(1)).register(eq(NAME_METHOD), any(HealthCheck.class));

    InOrder inOrder = inOrder(context, errorMeter, counter);
    inOrder.verify(counter, times(1)).inc();
    inOrder.verify(context, times(1)).close();
    inOrder.verify(errorMeter, times(1)).mark();
    inOrder.verify(counter, times(1)).dec();

}
InstrumentingInterceptorTest.java 文件源码 项目:instrumentor 阅读 26 收藏 0 点赞 0 评论 0
@Test
public void testClassAnnotation() throws Exception {
    String methodName = NAME_CLASS + ".faultyMethod";

    when(metricRegistry.timer(methodName)).thenReturn(timer);
    when(metricRegistry.meter(methodName + ".errors")).thenReturn(errorMeter);
    when(metricRegistry.counter(methodName + ".inFlight")).thenReturn(counter);

    when(timer.time()).thenReturn(context);

    try {
        classTestStub.faultyMethod();
    } catch (RuntimeException ignored) {}

    verify(healtchCheckRegistry, times(1)).register(eq(methodName), any(HealthCheck.class));

    InOrder inOrder = inOrder(context, errorMeter, counter);
    inOrder.verify(counter, times(1)).inc();
    inOrder.verify(context, times(1)).close();
    inOrder.verify(errorMeter, times(1)).mark();
    inOrder.verify(counter, times(1)).dec();

}
HealthChecksServer.java 文件源码 项目:StubbornJava 阅读 21 收藏 0 点赞 0 评论 0
public static void main(String[] args) {
    /*
     *  Init connection pools. They auto register their own health checks.
     */
    ConnectionPools.getProcessing();
    ConnectionPools.getTransactional();

    // Assume some global HttpClient.
    OkHttpClient client = new OkHttpClient.Builder().build();

    HttpUrl passingPath = HttpUrl.parse("http://localhost:8080/ping");
    HealthCheck passing = new ExternalServiceHealthCheck(client, passingPath);
    HealthChecks.getHealthCheckRegistry().register("ping", passing);

    // Since this route doesn't exist it will respond with 404 and should fail the check.
    HttpUrl failingPath = HttpUrl.parse("http://localhost:8080/failingPath");
    HealthCheck failing = new ExternalServiceHealthCheck(client, failingPath);
    HealthChecks.getHealthCheckRegistry().register("shouldFail", failing);

    // Once again pull in a bunch of common middleware.
    SimpleServer server = SimpleServer.simpleServer(Middleware.common(ROUTES));
    server.start();
}
CodahaleHealthCheck.java 文件源码 项目:polygene-java 阅读 35 收藏 0 点赞 0 评论 0
static HealthCheck.Result unwrap( Result result )
{
    String message = result.getMessage();
    if( result.isHealthy() )
    {
        if( message != null )
        {
            return HealthCheck.Result.healthy( message );
        }
        return HealthCheck.Result.healthy();
    }
    Throwable error = result.getException();
    if( error != null )
    {
        return HealthCheck.Result.unhealthy( error );
    }
    return HealthCheck.Result.unhealthy( message );
}
HealthCheckResource.java 文件源码 项目:pay-publicauth 阅读 31 收藏 0 点赞 0 评论 0
@GET
@Path("healthcheck")
@Produces(APPLICATION_JSON)
public Response healthCheck() throws JsonProcessingException {
    SortedMap<String, HealthCheck.Result> results = environment.healthChecks().runHealthChecks();

    Map<String, Map<String, Boolean>> response = getResponse(results);

    boolean healthy = results.size() == results.values()
            .stream()
            .filter(HealthCheck.Result::isHealthy)
            .count();

    if (healthy) {
        return Response.ok().entity(response).build();
    }
    return status(503).entity(response).build();
}


问题


面经


文章

微信
公众号

扫码关注公众号