Hystrix仪表板卡在加载屏幕上

时间:2019-06-02 15:33:38

标签: hystrix

我有在本地主机: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>

2 个答案:

答案 0 :(得分:0)

尝试通过调用控制器来发送一些请求。 如果没有请求,则仪表板将继续加载。

答案 1 :(得分:0)


问题

就我而言,将spring-cloud升级到Hoxton.SR6后会发生错误。

在浏览器控制台中,出现以下错误:

未捕获的TypeError:e.indexOf不是函数

这似乎是jquery版本的问题。


解决方案

将spring-cloud版本降级为Hoxton.SR4,然后错误消失了。

因此,您可能需要检查浏览器的控制台输出以查看是否存在错误。


提示

  • 另一个可能的原因是您尚未访问由@HystrixCommand标记的应用程序api。
    在这种情况下,调用api,然后仪表板将显示图表。