我目前正试图将openTelemetry跟踪添加到我的quarkus项目中。它是一个lambda,用于访问数据源并进行一些处理。目前,我们使用的是反应式pgadmin,但当我尝试在使用quarkus-opentelemetry-exporter-otlp
导入时进行查询时,我会收到这个错误class io.vertx.sqlclient.impl.tracing.QueryRequest cannot be cast to class io.vertx.core.spi.observability.HttpRequest (io.vertx.sqlclient.impl.tracing.QueryRequest and io.vertx.core.spi.observability.HttpRequest are in unnamed module of loader io.quarkus.bootstrap.classloading.QuarkusClassLoader @4b3ed2f0)
。当OpenTelemetry未包含在此项目的pom.xml中时,此代码不会显示此错误。
我希望这个请求能够通过,或者简单地关闭vertx请求的打开跟踪。然而,我已经通读了quarkus的文档,不确定如何做到这一点。我能想到的一种方法是创建一个提供者来创建PgPool,因为我可能可以在PGPoolConnectionOptions
中设置一个TracingPolicy.IGNORE
。
这是我的代码堆栈:
pom.xml
<quarkus-plugin.version>2.6.0.Final</quarkus-plugin.version>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-opentelemetry-exporter-otlp</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-reactive-pg-client</artifactId>
</dependency>
Code:
import io.vertx.mutiny.pgclient.PgPool;
@Inject
@ReactiveDataSource("important")
PgPool pool;
pool.preparedQuery(QUERY.sql()).executeAndAwait(...
TLDR:如何打开openetremetry quarkus堆栈上的跟踪以进行vertx查询。
您提到的异常已在中修复https://github.com/quarkusio/quarkus/pull/22809首次出现在Quarkus 2.6.3.Final 中