首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring cloud网关hystrix不工作

Spring cloud网关hystrix不工作
EN

Stack Overflow用户
提问于 2018-01-05 03:49:44
回答 2查看 1.6K关注 0票数 0

我在让hystrix使用我的路线时遇到了问题。像重写路径和负载平衡这样的东西都在工作,但是由于某些原因,hystrix从来不会出错。我正在将我的超时设置得非常低,并且在下游服务中有延迟。为了让hystrix工作,你需要做什么特殊的事情吗?

我将spring-cloud-gateway与eureka和spring-cloud-config一起使用。另外,是否有一种方法可以在路由不工作时进行调试?就像日志设置一样,看看发生了什么?

这是我的路线:

代码语言:javascript
复制
spring:
  cloud:
    gateway:
      routes:
      # =====================================
      - id: main-service
        uri: lbl://main-service
        predicates:
        - Path=/main-service**
        filters:
        - Hystrix=mainservice

这是我的pom

代码语言:javascript
复制
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.0.M7</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-
        8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    <spring-cloud.version>Finchley.M5</spring-cloud.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-gateway</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-config</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka</artifactId>
        <version>1.4.0.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-hystrix</artifactId>
        <version>2.0.0.M2</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

下面是我的Application类:

代码语言:javascript
复制
@EnableDiscoveryClient
@EnableHystrix
@SpringBootApplication
public class GatewayApplication {

    public static void main(String[] args) {
    SpringApplication.run(GatewayApplication.class, args);
    }
  }

jar中唯一的另一个类是:

代码语言:javascript
复制
@Configuration
public class GatewayConfiguration {

@Bean
public DiscoveryClientRouteDefinitionLocator 
      discoveryClientRouteLocator(DiscoveryClient discoveryClient) {

    return new DiscoveryClientRouteDefinitionLocator(discoveryClient);
    }

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-16 05:55:56

我发现了问题所在。看起来,如果您添加eureka发现,那么它会自动添加与您的eureka服务器返回的所有spring.application.names匹配的路由,并且这些路由的顺序与我使用应用程序名称作为谓词定义的顺序相同。我能够通过将我的路由的顺序设置为-1来解决这个问题。

我不确定是否有更好的方法来做到这一点,但至少我知道hystrix正在工作。

谢谢

票数 0
EN

Stack Overflow用户

发布于 2018-08-22 15:12:13

也许你应该使用这个依赖关系:

代码语言:javascript
复制
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48102526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档