@HystrixCommand不产生任何新线程,也没有触发后备

时间:2018-12-02 10:30:46

标签: java multithreading threadpool dropwizard hystrix

我有一个简单的Dropwizard应用程序,我想在其中使用javanica的HystrixCommand注释。 这是代码:

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方面。

请查明确切的错误和解决方法。

0 个答案:

没有答案