【问题标题】:Use @Timed for inheritanced functions将@Timed 用于继承函数
【发布时间】:2019-03-04 18:27:55
【问题描述】:

我们为类似这个伪代码的服务使用抽象类

abstract class AbstractApiService {
    @Timed(value="get", useClassPrefix=true)
    def get(Long id) {
       ... returns sth ....
    }

    @Timed(value="create", useClassPrefix=true)
    def create(Map params) {
        ... returns sth ....
    }
}

有些 bean 继承 AbstractApiService 并提供创建、删除、更新实体等功能

class UserAccountService extends AbstractApiService {
    ... code ....
}

我想从 UserAccountService 等子类中获取每次调用函数的指标,但 Prometheus 发送带有完整父类前缀的事件。

应用基于 Grails 3.3.8

build.gradle:

compile 'com.moelholm:prometheus-spring-boot-starter:1.0.2' 
compile 'io.dropwizard.metrics:metrics-core:4.0.0-alpha2'
compile 'io.dropwizard.metrics:metrics-jvm:4.0.0-alpha2' 
compile 'org.grails.plugins:dropwizard-metrics:1.0.0.M2'

【问题讨论】:

    标签: spring-boot grails groovy dropwizard grails-3.3.x


    【解决方案1】:

    我创建了一个自定义手动解决方案 https://gist.github.com/michmzr/1e03534bc5fb6df89065f6964acf9c71

    【讨论】:

      【解决方案2】:

      不幸的是,我相信您必须为要跟踪的每个方法定义 @Timed 注释。我不认为注释代码会为每个具体类建立一个单独的指标。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-19
        • 1970-01-01
        • 1970-01-01
        • 2021-10-30
        • 1970-01-01
        • 2013-07-24
        相关资源
        最近更新 更多