我有在本地主机: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>
答案 0 :(得分:0)
尝试通过调用控制器来发送一些请求。 如果没有请求,则仪表板将继续加载。
答案 1 :(得分:0)
就我而言,将spring-cloud升级到Hoxton.SR6
后会发生错误。
在浏览器控制台中,出现以下错误:
未捕获的TypeError:e.indexOf不是函数
这似乎是jquery版本的问题。
将spring-cloud版本降级为Hoxton.SR4
,然后错误消失了。
因此,您可能需要检查浏览器的控制台输出以查看是否存在错误。
@HystrixCommand
标记的应用程序api。