2016-07-26 6 views
-1

Java에서 내 서비스의 상태 검사를 구현하려고합니다. 이것은 Spring Boot를 사용하고 있습니다. 이 헬스 체크에서는 호출하는 서비스가 여러 개 있으며 각 서비스의 결과가 NULL인지 확인해야합니다. 그런 다음 각 서비스의 반환 값은 서비스 이름을 포함하는 객체에 저장되고 오류 발생 여부는 부울 값으로 저장됩니다. 현재, 나는이 방법을이 방법으로 가지고 있고, 나에게는 매우 못 생겼다. 나는 이것을 구현하는 다른 방법을 생각할 수 없다.Java에서이 상태 확인을 수행하는 올바른 방법은 무엇입니까?

Public HealthCargo() { 
    string service_name; 
    boolean error; 
} 

@Resource(name = "AService") 
private AService aService; 

@Resource(name = "BService") 
private BService bService; 

@Resource(name = "CService") 
private CService cService; 

@RequestMapping(method = RequestMethod.GET, value = "/healthcheck", produces = {MediaType.APPLICATION_JSON_VALUE}) 
@ResponseBody 
public List<HealthCargo> healthcheck() { 
    List<HealthCargo> checks = new ArrayList<>(); 
    boolean error = true; 
    SomeCargoA someCargoA = new SomeCargoA(); 
    SomeCargoB someCargoB = new SomeCargoB(); 

    try { 
     someCargoA = aService.fetch("182731"); 
     if (someCargoA == NULL) 
      error = false; 

    } catch (Exception e) { 
    } finally { 
     checks.add(New HealthCargo("aService", error)); 
    } 

    error = true; 
    try { 
     someCargoB = bService.fetch("182731"); 
     if (someCargoB == NULL) 
      error = false; 

    } catch (Exception e) { 
    } finally { 
     checks.add(New HealthCargo("bService", error)); 
    } 

    error = true;  
    .... // Similar logic for service C 

    return checks; 
} 

는 오류가 거짓이면 그 옆에 녹색 체크 표시 목록의 모든 서비스와 자신의 상태를 표시합니다이 함수를 호출 다른 뭔가가있을 것입니다.

나는 어설 션을 사용하는 것에 대해 생각해 봤지만, 어설 션에 오류가있는 경우 프로그램을 중단합니다. 호출 결과를 true 또는 false로 저장해야하며 객체가 null인지 여부에 따라 다릅니다. 3 가지 try try 문을 사용하는 것 외에 다른 방법은 무엇입니까?

답변

1

스프링 부트이므로 스프링 부트 액추에이터 (이 사용 사례를 위해 특별히 제작 됨)가 있어야 할 것입니다. 여기에 제안 된 구조는 조금 이상합니다. 서비스가 자신의 건강을 알지 못하도록 설정하려고하지만 느린 이유는 분명하지 않습니다 (이것은 "하트 비트 "유형 시나리오 - 합성되지 않은 볼륨이 낮거나 비 연속적이어서 서비스에 전송할 합성"트랜잭션 "생성?)

관련 문제