2

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

DatabaseClient dbClient = spanner.getDatabaseClient(...)

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

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

4

1 回答 1

5

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

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

于 2017-03-01T16:10:42.777 回答