Estou tendo problemas com meu fallback method que aparentemente nunca é chamado quando o serviço de pedidos está fora do ar! A seguir o código que usei para construir os métodos:
Na classe Controller
:
@PatchMapping("/{id}/confirm")
@CircuitBreaker(name = "updateOrderPaymentCall", fallbackMethod = "authorizedPaymentWhitPendedIntegration")
public ResponseEntity<HttpStatus> confirmPayment(@PathVariable @NotNull Long id) {
service.confirmPayment(id);
return ResponseEntity.ok().build();
}
public void authorizedPaymentWhitPendedIntegration(Long id, Exception ex) {
service.alterPaymentStatus(id);
}
Na classe Service
:
@Transactional
public void alterPaymentStatus(Long id) {
var payment = repository.findById(id).orElseThrow(() -> new EntityNotFoundException("Payment not found for id: %d".formatted(id)));
payment.comfirmWhitPendedIntegration();
repository.save(payment);
}
Meu application.porperties
:
resilience4j.circuitbreaker.instances.updateOrderPaymentCall.slidingWindowSize= 3
resilience4j.circuitbreaker.instances.updateOrderPaymentCall.minimumNumberOfCalls= 2
resilience4j.circuitbreaker.instances.updateOrderPaymentCall.waitDurationInOpenState= 50s
Link do repositório com o projeto: https://github.com/GuilhermeABRoncari/AluraFood-Payments
O que será que pode estar acontecendo? O.o