Spanner 的 DatabaseClient 线程安全吗?

Is Spanner's DatabaseClient threadsafe?

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

DatabaseClient dbClient = spanner.getDatabaseClient(...)

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

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

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

DatabaseClientimplemented using the SessionPool class. The note about thread-safety can be seen in the SessionPool implementation.