@HystrixCommand не порождает новых потоков и не вызывает отката - PullRequest
0 голосов
/ 02 декабря 2018

У меня есть простое приложение Dropwizard, и я хочу использовать в нем аннотацию HystrixCommand от javanica.Вот код:

HelloWorldResource.java

package sample;

import com.codahale.metrics.annotation.Timed;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import java.util.Optional;

@Path("/hello-world")
@Produces(MediaType.APPLICATION_JSON)
public class HelloWorldResource {
  private final String template;
  private final String defaultName;

  public HelloWorldResource(String template, String defaultName) {
    this.template = template;
    this.defaultName = defaultName;
  }

  @GET
  @Timed
  public String sayHello(@QueryParam("name") Optional<String> name) throws Exception {
    AnotherUser user = new AnotherUser();
    return user.getName();
  }

}

AnotherUser.java

package sample;

import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;

public class AnotherUser{
  private String name;

  public AnotherUser() {
  }

  @HystrixCommand(commandKey = "someKey", fallbackMethod = "getTest")
  public String getName() {
    return "something";
  }

  public String getTest() {
    return "Test";
  }

  public void setName(String name) {
    this.name = name;
  }
}

Но всякий раз, когда яНажав на сервер /hello-world API, функция getName в AnotherUser.java выполняется в потоке dw-main (проверьте с помощью отладчика IntelliJ).

Я не могу определить точное решение проблемы.Я просмотрел много постов, но большинство из них использует Spring в качестве фреймворка, и я не могу понять его аспект AOP.

Пожалуйста, укажите точную ошибку и решение для нее.

...