【问题标题】:TimeoutException in edge using Feign and Hystrix使用 Feign 和 Hystrix 的边缘超时异常
【发布时间】:2016-04-28 16:04:16
【问题描述】:

我正在使用 Netflix 微服务 API 构建一个培训应用。

这是我的优势,从 localhost:9999 开始:

@EnableHystrix
@EnableZuulProxy
@EnableEurekaClient
@SpringBootApplication
public class EdgeApplication {
    public static void main(String[] args) {
        SpringApplication.run(EdgeApplication.class, args);
    }
}

我定义了以下 2 个应用程序:

app-a 公开一个简单的 Web 服务 service-a 并在 localhost:8081 上启动 app-b 公开了一个 Web 服务 service-b,它调用 service-a,并在 localhost:8082 上启动

service-b 使用 Netflix Feign 调用 service-a

@FeignClient(value = "app-a", fallback = AppAFallback.class)
public interface AppAClient {
    @RequestMapping(value = "service-a", method = RequestMethod.GET)
    List<Entity> serviceA();
}
@Component
public class AppAFallback implements AppAClient {
    private static final Entity DEFAULT_ENTITY = new Entity();

    @Override
    public List<Entity> serviceA() {
        return Collections.singletonList(DEFAULT_ENTITY);
    }
}

app-aapp-b 正在运行时,每个服务都按预期响应:

如果app-b 关闭,则应调用备用AppAFallback。但是,我必须等待大约 1 分钟才能发生。

就在app-b 关闭之后:

app-b 关闭 1 分钟后:

这是我预期的结果。关于为什么在app-b 关闭之后对app-a/service-a 的调用让我超时的任何想法?

提前感谢您的帮助。

【问题讨论】:

    标签: spring netflix netflix-eureka netflix-zuul netflix-feign


    【解决方案1】:

    我遇到过同样的问题,我认为(未经测试)是 Eureka 的更新频率导致了问题。就在 app-b 宕机之后,Eureka 仍然认为 app-b 已经启动(尚未检查心跳)。并且在 app-b 宕机 1 分钟后,Eureka known app-b 宕机,只是告诉你的 app-a 没有 app-b,因此 fallback 立即触发。

    【讨论】:

      猜你喜欢
      • 2016-02-06
      • 2019-04-21
      • 2016-02-26
      • 2018-05-27
      • 2017-10-10
      • 2019-08-18
      • 2020-09-23
      • 2016-10-31
      • 2017-08-01
      相关资源
      最近更新 更多