Nao estou conseguindo anexar por aqui o erro do postman, mas quando meu eu desligo meu ms de pagamento, na requisicao http://localhost:8082/pagamentos-ms/pagamentos/2/confirmar retorna como:
{
"timestamp": "2023-11-14T18:59:39.060+00:00",
"path": "/pagamentos-ms/pagamentos/2/confirmar",
"status": 500,
"error": "Internal Server Error",
"requestId": "39306825-63"
}
E quando ativo o ms novamente... o request http://localhost:8082/pagamentos-ms/pagamentos/2 retorna e nao o status novo CONFIRMADO_SEM_INTEGRACAO,
{
"id": 2,
"valor": 500.00,
"nome": "Jacqueline",
"numero": "12345678",
"expiracao": "10/29",
"codigo": "123",
"status": "CONFIRMADO",
"formaDePagamentoId": 1,
"pedidoId": 1
}
public void confirmarPagamento(Long id){
Optional<Pagamento> pagamento = repository.findById(id);
if (!pagamento.isPresent()) {
throw new EntityNotFoundException();
}
pagamento.get().setStatus(Status.CONFIRMADO);
repository.save(pagamento.get());
pedido.atualizaPagamento(pagamento.get().getPedidoId());
}
public void alteraStatus(Long id) {
Optional<Pagamento> pagamento = repository.findById(id);
if (!pagamento.isPresent()) {
throw new EntityNotFoundException();
}
pagamento.get().setStatus(Status.CONFIRMADO_SEM_INTEGRACAO);
repository.save(pagamento.get());
}
@PatchMapping("/{id}/confirmar")
@CircuitBreaker(name = "atualizaPedido", fallbackMethod = "pagamentoAutorizadoComIntegracaoPendente")
public void confirmarPagamento(@PathVariable @NotNull Long id){
service.confirmarPagamento(id);
}
public void pagamentoAutorizadoComIntegracaoPendente(Long id, Exception e){
service.alteraStatus(id);
}
//circuit breaker
resilience4j.circuitbreaker.instances.atualizaPedido.slidingWindowSize: 3
resilience4j.circuitbreaker.instances.atualizaPedido.minimumNumberOfCalls: 2
resilience4j.circuitbreaker.instances.atualizaPedido.waitDurationInOpenState: 50s
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>3.1.2</version>
</dependency>
<dependency>
<groupId>io.github.resilience4j</groupId>
<artifactId>resilience4j-spring-boot2</artifactId>
<version>1.7.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>