Microprofile includes in its scope a specification helping you to handle your fallback logic in a "standard" way. The specification allows to define a fallback method reference or handler on a method in case this last one fails. Here what it can look like:
@Fallback(method = "getDataFallback") public Data getData() { return client.target("http://server1.company.com") .request(APPLICATION_JSON_TYPE) .get(Data.Class); }private Data getDataFallback() { return new Data(...);}
Here, you will call getData from all the consumers of the enclosing service, and if the method fails, the microprofile fallback handling will automatically call getDataFallback.
This implementation also supports @Retry, which allows you to define ...