1
resposta

[Bug] Circuit breaker não está ativando

Olá pessoal,

vi algumas perguntas aqui no fórum com pessoal passando pelo mesmo problema que eu passei porém sem resposta ou solução. Como acabei encontrando a solução, vou registrar aqui para ajudar os próximos que virão.

O bug acontece no seguinte cenário, eu estou utilizando a versão 3.4.2 do Spring e na aula a professora sugere instalar a seguinte dependência:

pom.xml

<dependency>
    <groupId>io.github.resilience4j</groupId>
    <artifactId>resilience4j-spring-boot2</artifactId>
    <version>1.7.0</version>
</dependency>

depois de algumas horas perdidas reparei no resilience4j-spring-boot2 que era para o Spring 2, e como estou utilizando a 3 deve haver algum nível de incompatibilidade e isso não gera nenhum erro no console, simplesmente não ativa o circuit breaker em momento nenhum. Quando você realiza a requisição para payment-ms (coloquei em inglês mas é o equivalente a pagamentos-ms da aula) com o order-ms (equivalente ao peididos-ms da aula) desligado a única resposta que obtém é :

Resposta da requisição no postman

{
    "timestamp": "2025-01-31T20:01:31.000+00:00",
    "status": 500,
    "error": "Internal Server Error",
    "trace": "feign.FeignException$ServiceUnavailable: [503] during [PUT] to [http://order-microservice/orders/4/paid] [OrderClient#updatePaidOrder(Long)]: [Load balancer does not contain an instance for the service order-microservice]\r\n\tat feign.FeignException.serverErrorStatus(FeignException.java:287)\r\n\tat feign.FeignException.errorStatus(FeignException.java:226)\r\n\t ..."	
    "message": "[503] during [PUT] to [http://order-microservice/orders/4/paid] [OrderClient#updatePaidOrder(Long)]: [Load balancer does not contain an instance for the service order-microservice]",
    "path": "/payments/5/confirm"
}

E mesmo sem um método de fallback ele continua dando esse erro ao invés de entrar no estado de OPEN dos circuit breaker.

Então como falei do resilience4j usando o spring 2 e o meu spring sendo o 3, consegui resolver o problema atualizando a dependência para:

pom.xml

<dependency>
    <groupId>io.github.resilience4j</groupId>
    <artifactId>resilience4j-spring-boot3</artifactId>
</dependency>

E isso resolveu meus problemas. Espero poder ter ajudado os futuros alunos com essa postagem.

Até mais pessoal.

1 resposta

Oi, Ulysses!

Que ótimo que você compartilhou sua solução aqui no fórum! Isso realmente pode ajudar muitos outros alunos que estejam enfrentando o mesmo problema.

Seu exemplo prático é um ótimo lembrete de que, ao trabalhar com bibliotecas e frameworks, sempre devemos verificar a compatibilidade das versões. Isso pode evitar muitos problemas e horas de depuração.

Um abraço e bons estudos.