Ich versuche, einen Gesundheitscheck für meine Dienste in Java zu implementieren. Dies verwendet Spring Boot. In dieser Zustandsprüfung habe ich mehrere Dienste, die ich anrufe, und ich muss sicherstellen, dass die Ergebnisse jedes Dienstes NULL sind. Der Rückgabewert jedes Dienstes wird dann in einem Objekt gespeichert, das den Dienstnamen und einen booleschen Wert enthält, ob ein Fehler aufgetreten ist oder nicht. Momentan habe ich dieses Setup auf diese Weise und für mich sieht es sehr hässlich aus. Ich kann mir keinen anderen Weg vorstellen, dies zu implementieren.Korrekter Weg, diese Gesundheitsprüfung in Java durchzuführen?
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;
}
Es wäre etwas anderes sein, das diese Funktion aufruft, die neben ihnen alle Dienste und deren Status in einer Liste mit einem grünen Häkchen zeigen wird, wenn der Fehler falsch ist.
Ich habe über die Verwendung von Behauptungen gedacht, aber das würde das Programm stoppen, wenn es einen Fehler mit der Assert gab. Ich muss das Ergebnis eines Aufrufs als wahr oder falsch speichern und das hängt davon ab, ob das Objekt null ist oder nicht. Anders als 3 verschiedene try catch-Anweisungen zu verwenden, was ist eine andere Möglichkeit, dies zu tun?