Недавно созданная / расширенная конечная точка JHipster не работает (ошибка 404) - PullRequest
0 голосов
/ 06 мая 2020

Я хочу создать новую конечную точку, которая расширяет существующую конечную точку jhimetrics (или расширяет результаты существующей jhimetrics). Приложение создано с помощью JHipster. Итак, что я сделал:

  • добавил новую конечную точку в массив в application.yml файле, а именно:
management:
    endpoints:
        web:
            base-path: /management
            exposure:
                include: [ ..., "health", "info", "jhimetrics", "roxhens"]
  • создал ExtendedMetricsEndpoint.java со следующим содержанием:
// imports, etc...

@Endpoint(id = "roxhens")
public class ExtendedMetricsEndpoint {
    private final JHipsterMetricsEndpoint delegate;
    private final SimpUserRegistry simpUserRegistry;

    public ExtendedMetricsEndpoint(
        JHipsterMetricsEndpoint delegate, 
        SimpUserRegistry simpUserRegistry
    ) {
        this.delegate = delegate;
        this.simpUserRegistry = simpUserRegistry;
    }

    @ReadOperation
    public Map<String, Map> getMetrics() {
        Map<String, Map> metrics = this.delegate.allMetrics();
        HashMap<String, Integer> activeUsers = new HashMap<>();
        activeUsers.put("activeUsers", this.simpUserRegistry.getUserCount());
        metrics.put("customMetrics", new HashMap(activeUsers));
        return metrics;
    }

}
  • создал файл конфигурации для этой конечной точки:
// imports etc...

@Configuration
@ConditionalOnClass(Timed.class)
@AutoConfigureAfter(JHipsterMetricsEndpointConfiguration.class)
public class ExtendedMetricsEndpointConfiguration {

    @Bean
    @ConditionalOnBean({JHipsterMetricsEndpoint.class, SimpUserRegistry.class})
    @ConditionalOnMissingBean
    @ConditionalOnAvailableEndpoint
    public ExtendedMetricsEndpoint extendedMetricsEndpoint(JHipsterMetricsEndpoint jHipsterMetricsEndpoint, SimpUserRegistry simpUserRegistry) {
        return new ExtendedMetricsEndpoint(jHipsterMetricsEndpoint, simpUserRegistry);
    }
}

Какой шаг мне здесь не хватает или что я делаю не так?

1 Ответ

0 голосов
/ 06 июля 2020

У меня была такая же проблема, и после 2 дней борьбы я смог найти решение, которое работает для меня:

@Component
@WebEndpoint(id = "xxxmetrics")
public class XXXMetricsEndpoint {
    private final MeterRegistry meterRegistry;

    public SrnMetricsEndpoint(MeterRegistry meterRegistry) {
        this.meterRegistry = meterRegistry;
    }

    @ReadOperation
    public Map<String, Map> allMetrics() {
        Map<String, Map> stringMapMap = new LinkedHashMap<>();

        return stringMapMap;
    }
}

Application yml:

management:
    endpoints:
        web:
            base-path: /management
            exposure:
                include: [... , 'health', 'info', 'jhimetrics', 'xxxmetrics' ,'metrics', 'logfile']

Таким образом запрос: / management / xxxmetrics работает.

Spring документы: https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-features.html#production -ready-endpoints-custom

Редактировать: версия spring: 5.1.10, spring- Пыльник-привод: 2.1.9

...