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();
      }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值