2015-09-01 3 views
1

Я пытаюсь использовать hystrix для мониторинга определенного сетевого вызова. Но все показатели, которые я пытаюсь контролировать, всегда пусты. Что я делаю не так?Почему я не получаю метрики из-за гистерезис?

Я имитируют сетевой вызов путем реализации (несколько) RESTful интерфейс, который возвращает расчет Pow:

GetPowerCommand gpc = new GetPowerCommand(5, 82); 
powerMetrics = gpc.getMetrics(); 

Это, как я называю команду Hystrix и ожидать, чтобы получить некоторые метрики (по крайней мере запросов: не 0)

boolean run = true; 
while (run) { 
    try { 
     Thread.sleep(1000); 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
     run = false; 
    } 
    System.out.println("GetPowerCommand.run(): " + gpc.run()); 
    System.out.println("GetPowerCommand.run(): " + gpc.run()); 
    System.out.println("getStatsStringFromMetrics(powerMetrics): " + getStatsStringFromMetrics(powerMetrics)); 
} 

Но все это я получаю:

GetPowerCommand.run(): <p>I guess .. </p><p>2^5 = 32</p> 
GetPowerCommand.run(): <p>I guess .. </p><p>2^5 = 32</p> 
getStatsStringFromMetrics(powerMetrics): Requests: 0 Errors: 0 (0%) Mean: 0 50th: 0 75th: 0 90th: 0 99th: 0 
GetPowerCommand.run(): <p>I guess .. </p><p>2^5 = 32</p> 
GetPowerCommand.run(): <p>I guess .. </p><p>2^5 = 32</p> 
getStatsStringFromMetrics(powerMetrics): Requests: 0 Errors: 0 (0%) Mean: 0 50th: 0 75th: 0 90th: 0 99th: 0 

Редактирование: мои метрики поиска метод:

private static String getStatsStringFromMetrics(HystrixCommandMetrics metrics) { 
    StringBuilder m = new StringBuilder(); 
    if (metrics != null) { 
     HealthCounts health = metrics.getHealthCounts(); 
     m.append("Requests: ").append(health.getTotalRequests()).append(" "); 
     m.append("Errors: ").append(health.getErrorCount()).append(" (").append(health.getErrorPercentage()) 
       .append("%) "); 
     m.append("Mean: ").append(metrics.getTotalTimeMean()).append(" "); 
     m.append("50th: ").append(metrics.getExecutionTimePercentile(50)).append(" "); 
     m.append("75th: ").append(metrics.getExecutionTimePercentile(75)).append(" "); 
     m.append("90th: ").append(metrics.getExecutionTimePercentile(90)).append(" "); 
     m.append("99th: ").append(metrics.getExecutionTimePercentile(99)).append(" "); 
    } 
    return m.toString(); 
} 
+0

У меня могло бы быть решение здесь: Я думаю, что неправильно называть 'GetPowerCommand.run()'. Вместо этого я должен вызвать 'GetPowerCommand.execute()'. – Christian

ответ

1

Вы уже ответили на свой вопрос: использовать execute() вместо run(). Посмотрите также here

 Смежные вопросы

  • Нет связанных вопросов^_^