【发布时间】:2022-11-23 00:50:58
【问题描述】:
我正在使用 GCP 提供的 Vert.X 和 Bigtable 客户端库。查询数据的调用是从工作池/executeBlocking 发出的。但是我收到的 AsyncResult 是空的,过了一会儿,警告日志被打印出来,因为工作线程被阻塞的时间太长了。
摇篮依赖:
object Versions {
const val protobuf = "3.20.1"
const val bigtable = "2.5.3"
}
dependencies {
apply(plugin = "io.freefair.lombok")
implementation("com.google.protobuf", "protobuf-java", Versions.protobuf)
implementation("com.google.cloud", "google-cloud-bigtable", Versions.bigtable)
// https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind
implementation("com.fasterxml.jackson.core:jackson-databind:2.14.0")
compileOnly("org.projectlombok:lombok")
annotationProcessor("org.projectlombok:lombok")
implementation(platform("io.vertx:vertx-stack-depchain:$vertxVersion"))
implementation("org.slf4j:slf4j-api:1.7.+")
implementation("ch.qos.logback:logback-classic:1.2.+")
implementation("io.vertx:vertx-config")
implementation("io.vertx:vertx-web")
implementation("io.vertx:vertx-micrometer-metrics")
implementation("io.vertx:vertx-opentracing")
testImplementation("io.vertx:vertx-junit5")
testImplementation("org.junit.jupiter:junit-jupiter:$junitJupiterVersion")
}
大表 API 调用:
vertx.<Row>executeBlocking(t->{ var row=dataClient.readRow(TABLE_ID,"1234#DATA"); t.complete(row); }).onComplete(r->{ log.info("Result"+r.result()); });以下是日志: 11:36:46.376 [vert.x-worker-thread-1] INFO StateRepository - 正在部署的 StateRepository
11:36:46.379 [vert.x-worker-thread-1] INFO StateRepository - Resultnull
我在想 Bigtable 客户端在内部创建一个执行程序来处理连接,并且没有使用初始化它的工作线程池。但这可能完全是另一回事
【问题讨论】:
标签: java google-cloud-platform vert.x google-cloud-bigtable