spring boot 源码解析49-MetricsEndpointMetricReader

 2019-10-17 22:06  阅读(1400)
文章分类:Spring boot

前言

本文还是拾遗–> 对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 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(metricName, (Number) value);
              }
              return metric;
          }
      
      1. 调用MetricsEndpoint#invoke获得所有的Metric,其返回值是一个map,key–>Metric的名字,value–>Metric对应的值
      2. 如果存在,则将其封装为Metric,注意,此时,Metric的时间戳为当前时间
    2. findAll,代码如下:

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

来源:[]()

点赞(0)
版权归原创作者所有,任何形式转载请联系作者; Java 技术驿站 >> spring boot 源码解析49-MetricsEndpointMetricReader

相关推荐