Невозможно настроить панель инструментов Hystrix в приложении весенней загрузки - PullRequest
0 голосов
/ 04 июля 2018

Я пытаюсь настроить панель управления Hystrix для моего приложения весенней загрузки Java. После запуска приложения я получаю сообщение об открытии прокси в консоли, но ничего не происходит.

Proxy opening connection to: http://localhost:9083/actuator/hystrix.stream

На приборной панели написано Загрузка ... и ничего не отображается ... см. Изображение внизу.

Также, когда я нажимаю этот URL http://localhost:9083/actuator/hystrix.stream в браузере, никакие данные не отображаются, только постоянные пустые пинги. подобно
пинг:
пинг:
пинг:
...

Изменения кода, которые я сделал,

@RequestMapping(value = "/elasticsearch/{numberOfInstances}/{name}", method = RequestMethod.GET)
    public void ingestMip4DataToES(@PathVariable("numberOfInstances") int numberOfInstances,
            @PathVariable("name") String name) {

        if(numberOfInstances > 1) {
            List<IdentifiableType> identifiableTypes = generateMultipleInstancesOfMip4Data(numberOfInstances, name);
            if(!identifiableTypes.isEmpty()) {
                dumpBulkMip4DataToES(identifiableTypes);                
            }
        } else {
            IdentifiableType identifiableType = generateSingleInstanceOfMip4Data(name);
            if(identifiableType != null) {
                dumpMip4DataToES(identifiableType);             
            }
        }
    }
@HystrixCommand(fallbackMethod = "fallbackForMip4SingleDataGeneration")
    private IdentifiableType generateSingleInstanceOfMip4Data(String name) {
        String url = GENERATOR_URL + name;

        ResponseEntity<IdentifiableType> response = restTemplate.getForEntity(url, IdentifiableType.class);
        return response.getBody();
    }

private IdentifiableType fallbackForMip4SingleDataGeneration() {
        logger.info("Calling fallback method for mip4 data generation as request to service failed.");
        return null;
    }

Включены обязательные аннотации для основного класса.

@SpringBootApplication
//@EnableDiscoveryClient
@EnableCircuitBreaker
@EnableHystrixDashboard
public class InsaneMip4ElasticSearchApplication {

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

Файл ресурсов содержит следующие записи

management.endpoints.web.exposure.include=*
management.endpoints.web.exposure.include=hystrix.stream
management.endpoints.jmx.exposure.include=*
management.endpoint.health.show-details=ALWAYS
management.endpoint.shutdown.enabled=true

А для файла pom ниже были сделаны записи

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>

Панель приборов Hystrix выглядит следующим образом enter image description here

Ответы [ 2 ]

0 голосов
/ 13 мая 2019

Пожалуйста, добавьте @HystrixCommand (fallbackMethod = "fallbackForMip4SingleDataGeneration") к вашему @RequestMapping и попробуйте получить доступ к URL-адресу @RequestMapping несколько раз. Получив доступ к нужному URL-адресу @RequestMapping, перейдите на сайт hystrix.stream и найдете необходимую информацию.

0 голосов
/ 04 июля 2018

Приборная панель была пуста из-за неправильной конфигурации, которую я сделал. HystrixCommand должен быть присоединен к методам, которые аннотированы с RequestMapping. Это потому, что Hystrix контролирует конечные точки API.

Таким образом, изменения, приведенные ниже, заставили меня работать.

@HystrixCommand(fallbackMethod = "fallbackForMip4DataGeneration")
    @RequestMapping(value = "/elasticsearch/{numberOfInstances}/{name}", method = RequestMethod.GET)
    public void ingestMip4DataToES(@PathVariable("numberOfInstances") int numberOfInstances,
            @PathVariable("name") String name) {

        if(numberOfInstances > 1) {
            List<IdentifiableType> identifiableTypes = generateMultipleInstancesOfMip4Data(numberOfInstances, name);
            if(!identifiableTypes.isEmpty()) {
                dumpBulkMip4DataToES(identifiableTypes);                
            }
        } else {
            IdentifiableType identifiableType = generateSingleInstanceOfMip4Data(name);
            if(identifiableType != null) {
                dumpMip4DataToES(identifiableType);             
            }
        }
    }

    private void fallbackForMip4DataGeneration(int numberOfInstances, String name) {
        logger.info("Calling fallback method for mip4 data generation as request to service failed.");
    }

Итак, как вы можете видеть, теперь аннотация @HystrixCommand применяется к методу ingestMip4DataToES (), поскольку этот метод имеет аннотацию @RequestMapping. Ранее применение @HystrixCommand для метода generateSingleInstanceOfMip4Data () было неверным.

Теперь, когда я звоню на http://localhost:9083/mip4/elasticsearch/1/CUnitType,, я могу видеть текущий мониторинг этого звонка на панели инструментов Hystrix.

Не забудьте получить доступ к панели управления с помощью http://host:port/hystrix и применить http://host:port/actuator/hystrix.stream в URL, если для мониторинга используется Springboot 2 (2.0.2.RELEASE).

...