Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

412
Visualizações
Hystrix y Spring @Async en combinación

Estoy usando la biblioteca Hystrix para el proyecto Spring Boot ( spring-cloud-starter-hystrix ). Tengo una clase @Service anotada con @HystrixCommand y funciona como se esperaba.

Pero, cuando agrego el método anotado con @Async en esa misma clase de servicio, Hystrix no funciona y nunca se llama al método alternativo. ¿Qué podría causar este problema y cómo solucionarlo?

Esta es la clase de Application :

 @EnableCircuitBreaker @EnableHystrixDashboard @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }

Esta es la clase de servicio:

 @Service public class TemplateService { @HystrixCommand( fallbackMethod = "getGreetingFallback", commandProperties = {@HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "1500")} ) public String getGreeting() { URI uri = URI.create("http://localhost:8090/greeting"); ResponseEntity<String> response = restTemplate.exchange(uri, HttpMethod.GET, null, String.class); if (response.getStatusCode().equals(HttpStatus.OK)) { return response.getBody(); } else { return null; } } public String getGreetingFallback(Throwable e) { return null; } @Async public void async(String message) { try { Thread.sleep(5000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } logger.info(MessageFormat.format("Received async message {0}", message)); } }

La anotación @EnableAsync se coloca en una clase diferente anotada con @Configuration , donde configuro algunas otras opciones de Thread Executor desde el archivo de propiedades.

about 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Dado el código para TemplateService ( que no implementa la interfaz ) y asumiendo los valores predeterminados en @EnableAsync , es seguro estar de acuerdo en que los proxies CGLIB se crean en primavera.

Por lo tanto, la clase de proxy de servicio no hereda la anotación @HystrixCommand en getGreeting() ; lo que explica el comportamiento reportado.

Para superar este error, mantenga el método @HystrixCommand y @Async separados en diferentes servicios porque habilitar los proxies JDK tampoco ayudará y no estoy seguro acerca del modo AspectJ.

Consulte esto para obtener más información sobre el mecanismo de proxy de Spring.

about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda