Quarkus 2.11.x移除microprofile-metrics-api,迁移时Gauge注解缺失求助
解决Quarkus 2.11.x迁移中@Gauge注解缺失的问题
Quarkus 2.11.x版本升级到了MicroProfile Metrics 4.0,而你之前使用的org.eclipse.microprofile.metrics.annotation.Gauge注解在这个版本中已被移除,这是导致问题的核心原因。
替代方案
有两种主要方式可以替换原有的@Gauge功能:
1. 使用@Metric注解(注解式)
将原来的@Gauge替换为@Metric注解,可指定type = MetricType.GAUGE(无参数且返回非void的方法默认会被识别为Gauge,该参数可选)。示例:
原来的代码:
import org.eclipse.microprofile.metrics.annotation.Gauge; @Gauge(name = "activeConnections", tags = {"service=database"}) public int getActiveConnections() { return databaseConnectionPool.getActiveCount(); }
替换后的代码:
import org.eclipse.microprofile.metrics.MetricType; import org.eclipse.microprofile.metrics.annotation.Metric; @Metric(name = "activeConnections", tags = {"service=database"}, type = MetricType.GAUGE) public int getActiveConnections() { return databaseConnectionPool.getActiveCount(); }
2. 编程式注册Gauge
如果需要更灵活的控制,可以通过注入MetricRegistry手动注册Gauge:
import org.eclipse.microprofile.metrics.Gauge; import org.eclipse.microprofile.metrics.MetricRegistry; import jakarta.inject.Inject; import jakarta.annotation.PostConstruct; public class DatabaseMetrics { @Inject MetricRegistry registry; private DatabaseConnectionPool databaseConnectionPool; @PostConstruct public void initGauge() { registry.register("activeConnections", Gauge.of(() -> databaseConnectionPool.getActiveCount())); } }
关键说明
- Quarkus 2.11.x的BOM会自动将
microprofile-metrics-api升级到4.0版本,无需手动修改依赖版本。 - MicroProfile Metrics 4.0中移除了
@Gauge、@ConcurrentGauge等专用注解,统一通过@Metric注解或编程式API实现各类度量指标。
内容的提问来源于stack exchange,提问作者trisport88
相关产品推荐
相关产品推荐

