我在让hystrix使用我的路线时遇到了问题。像重写路径和负载平衡这样的东西都在工作,但是由于某些原因,hystrix从来不会出错。我正在将我的超时设置得非常低,并且在下游服务中有延迟。为了让hystrix工作,你需要做什么特殊的事情吗?
我将spring-cloud-gateway与eureka和spring-cloud-config一起使用。另外,是否有一种方法可以在路由不工作时进行调试?就像日志设置一样,看看发生了什么?
这是我的路线:
spring:
cloud:
gateway:
routes:
# =====================================
- id: main-service
uri: lbl://main-service
predicates:
- Path=/main-service**
filters:
- Hystrix=mainservice这是我的pom
<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类:
@EnableDiscoveryClient
@EnableHystrix
@SpringBootApplication
public class GatewayApplication {
public static void main(String[] args) {
SpringApplication.run(GatewayApplication.class, args);
}
}jar中唯一的另一个类是:
@Configuration
public class GatewayConfiguration {
@Bean
public DiscoveryClientRouteDefinitionLocator
discoveryClientRouteLocator(DiscoveryClient discoveryClient) {
return new DiscoveryClientRouteDefinitionLocator(discoveryClient);
}
}发布于 2018-01-16 05:55:56
我发现了问题所在。看起来,如果您添加eureka发现,那么它会自动添加与您的eureka服务器返回的所有spring.application.names匹配的路由,并且这些路由的顺序与我使用应用程序名称作为谓词定义的顺序相同。我能够通过将我的路由的顺序设置为-1来解决这个问题。
我不确定是否有更好的方法来做到这一点,但至少我知道hystrix正在工作。
谢谢
发布于 2018-08-22 15:12:13
也许你应该使用这个依赖关系:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>https://stackoverflow.com/questions/48102526
复制相似问题