spring boot 源码解析49-MetricsEndpointMetricReader

前言

本文还是拾遗–> 对MetricsEndpointMetricReader进行讲解.

解析

MetricsEndpointMetricReader–>实现了MetricReader接口,通过拉取MetricsEndpoint的所有的值来实现MetricReader.由于没有timestamp的数据,因此没有必要检查其是否是最新的,而且其默认是当前时间

该类没有进行自动装配

  1. 字段,构造器如下:

    private final MetricsEndpoint endpoint;
    
    public MetricsEndpointMetricReader(MetricsEndpoint endpoint) {
        this.endpoint = endpoint;
    }
  2. 其方法实现如下:

    1. findOne,代码如下:

      public Metric<?> findOne(String metricName) {
          Metric<Number> metric = null;
          // 1. 调用MetricsEndpoint#invoke获得所有的Metric,其返回值是一个map,key-->Metric的名字,
          // value-->Metric对应的值 
          Object value = this.endpoint.invoke().get(metricName);
          if (value != null) {
              // 2. 如果存在,则将其封装为Metric,注意,此时,Metric的时间戳为当前时间
              metric = new Metric<Number>(metricName, (Number) value);
          }
          return metric;
      }
      1. 调用MetricsEndpoint#invoke获得所有的Metric,其返回值是一个map,key–>Metric的名字,value–>Metric对应的值
      2. 如果存在,则将其封装为Metric,注意,此时,Metric的时间戳为当前时间
    2. findAll,代码如下:

      public Iterable<Metric<?>> findAll() {
          List<Metric<?>> metrics = new ArrayList<Metric<?>>();
          // 1. 调用MetricsEndpoint#invoke获得所有的Metric,其返回值是一个map,key-->Metric的名字,
          // value-->Metric对应的值 
          Map<String, Object> values = this.endpoint.invoke();
          Date timestamp = new Date();
          // 2. 遍历之,依次将其封装为Metric.注意,此时,Metric的时间戳为当前时间,加入到结果集即可
          for (Entry<String, Object> entry : values.entrySet()) {
              String name = entry.getKey();
              Object value = entry.getValue();
              metrics.add(new Metric<Number>(name, (Number) value, timestamp));
          }
          return metrics;
      }
      1. 调用MetricsEndpoint#invoke获得所有的Metric,其返回值是一个map,key–>Metric的名字,value–>Metric对应的值
      2. 遍历之,依次将其封装为Metric.注意,此时,Metric的时间戳为当前时间,加入到结果集即可
    3. count,实现如下:

      public long count() {
          return this.endpoint.invoke().size();
      }
    原文作者:Spring Boot
    原文地址: https://blog.csdn.net/qq_26000415/article/details/79214789
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞