io.micrometer @Timed 不为 Java 和 Springboot 应用程序中的 @Override 方法发出指标尝试手动注册 TimedAspect

问题描述

我正在尝试捕获 Java/Springboot 中覆盖方法的指标。下面是片段

@Override
@Timed(value = "processor_timer",histogram = true)
public void preProcess(byte[] key,byte[] event,Headers headers) {
      super.preProcess(key,event,headers);
}

我也添加了这个配置,但定时器仍然不适用于覆盖方法

import io.micrometer.core.aop.TimedAspect;
import io.micrometer.core.instrument.MeterRegistry;
import org.springframework.boot.actuate.autoconfigure.metrics.MeterRegistryCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoproxy;


@Configuration
@EnableAspectJAutoproxy
public class MetricsConfig {

    @Bean
    TimedAspect timedAspect(MeterRegistry registry) {
        return new TimedAspect(registry);

    }

}

Springboot 版本

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.4.RELEASE</version>
    <relativePath /> <!-- lookup parent from repository -->
  </parent>

我像这样调用预处理

@Slf4j
public abstract class Processor<T> {

    private static final String TIME_HEADER_KEY = "time";
    private static final String ERRORS_HEADER_KEY = "errors";
    String topic;

    public EventProcessor(String topic,) {
        this.topic = topic;
    }

    @Timed(value = "parent_preprocess_event",histogram = true)
    public void preProcess(byte[] key,Headers headers) {
           log.info("Inside parent preProcess");
           T message = extractMessage(event);
           //some business logic

        }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...