Вам необходимо написать обработчик Exception / Response для внешних вызовов вашего клиента и выдать пользовательские исключения, основанные на полученном статусе http. Затем зарегистрируйте эти исключения как исключения записей в конфигурации вашего автоматического выключателя. Ниже приведен небольшой пример. ЦБ будет открыт только на AbcException. Конфигурация CB: resilience4j.circuitbreaker.instances.bookService.record-exceptions=com.sk.example.cb.circuitbreakerr4j.AbcException
@Service
@Slf4j
public class BookApiService {
RestTemplate restTemplate = new RestTemplate();
@CircuitBreaker(name = "bookService", fallbackMethod = "getBookFallback")
public String getBook(){
try {
ResponseEntity<String> stringResponseEntity = restTemplate.getForEntity(new URI("http://localhost:8080/book"), String.class);
if(null != stringResponseEntity){
if(stringResponseEntity.getStatusCode().is2xxSuccessful()){
return stringResponseEntity.getBody();
}
}
} catch (URISyntaxException e) {
e.printStackTrace();
}catch (HttpServerErrorException e){
log.error("Service unavailable",e);
if(e.getMessage().startsWith("503")) {
throw new AbcException();
}else{
throw e;
}
}
return "";
}