我在 localhost:8988/hystrix 上运行 Hystrix 仪表板,我想监视 OrderService 和 ProductService 之间的请求。端点“hystrix.stream”已经注册,并且 hystrix 仪表板停留在加载状态,没有任何结果。
这是调用我想要监控的产品服务的服务客户端:
@Service
public class ProductServiceClient {
private final RestTemplate restTemplate;
public ProductServiceClient(RestTemplate restTemplate) {
this.restTemplate = restTemplate;
}
@HystrixCommand(fallbackMethod = "getDefaultProductById")
public Optional<ProductDto> getProductById(Long productId) {
ResponseEntity<ProductDto> productResponse = restTemplate
.getForEntity("http://product-service/api/product/{id}",
ProductDto.class,
productId);
if (productResponse.getStatusCode() == HttpStatus.OK) {
return Optional.ofNullable(productResponse.getBody());
} else {
log.error("Unable to get product with ID: " + productId
+ ", StatusCode: " + productResponse.getStatusCode());
return Optional.empty();
}
}
Optional<ProductDto> getDefaultProductById(String productId) {
log.info("Returning default ProductById for product Id: " + productId);
ProductDto productDto = new ProductDto();
productDto.setId(productId);
productDto.setName("UNKNOWN");
productDto.setDescription("NONE");
return Optional.ofNullable(productDto);
}
}
我将 @EnableCircuitBreaker 注释添加到主类中,并使用这些依赖项:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
Issue
就我而言,将 spring-cloud 升级到Hoxton.SR6
.
在浏览器控制台中,出现以下错误:
未捕获的类型错误:e.indexOf 不是函数
这似乎是jquery版本问题。
Solution
将 spring-cloud 版本降级为Hoxton.SR4
,那么错误就消失了。
因此,您可能需要检查浏览器的控制台输出以查看是否存在错误。
Tips
- 另一个可能的原因是您没有访问应用程序的 api,该 api 标记为
@HystrixCommand
yet.
在这种情况下,调用 api,仪表板就会显示图表。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)