spring boot 源码解析49-MetricsEndpointMetricReader

扫码关注公众号:Java 技术驿站

发送:vip
将链接复制到本浏览器,永久解锁本站全部文章

【公众号:Java 技术驿站】 【加作者微信交流技术,拉技术群】

前言

本文还是拾遗–> 对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) 打赏
版权归原创作者所有,任何形式的转载请联系博主:daming_90:Java 技术驿站 » spring boot 源码解析49-MetricsEndpointMetricReader

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏