Spanner 的 DatabaseClient 线程安全吗?

use*_*707 2 java thread-safety google-cloud-platform google-cloud-spanner

我们目前正在为 Spanner 检索 DatabaseClient,如下所示:

DatabaseClient dbClient = spanner.getDatabaseClient(...)
Run Code Online (Sandbox Code Playgroud)

跨多个线程使用这个 DatabaseClient 对象是否安全?具体来说,我们想要依赖注入 DatabaseClient 的一个实例,并想了解它是否是线程安全的并且可以重用,或者每个线程是否应该调用 spanner?

这是在 Web API 服务中使用的,因此对 URL 的大量传入请求,每个传入请求都需要一个扳手连接。什么是最好的分享对象?例如,我们不希望每个会话都必须加载 Google JSON 凭据(我们假设发生在 SpannerOptions Builder 中)。

Dan*_*ath 5

是的,它应该是线程安全的。

DatabaseClient是使用类实现SessionPool。关于线程安全的说明可以在SessionPool 实现中看到。