我们目前正在为Spanner检索DatabaseClient,如下所示:
DatabaseClient dbClient = spanner.getDatabaseClient(...)
在多个线程中使用此DatabaseClient对象是否安全?具体来说,我们想依赖注入一个DatabaseClient实例,并想了解它是否是线程安全的并且可以重用,或者每个线程是否应该调用spanner?
这是在Web API服务中使用的,因此对URL的大量传入请求,每个传入请求都需要一个扳手连接。最好的分享对象是什么?例如,我们不希望每个会话都必须加载Google JSON凭据(我们假设这发生在SpannerOptions Builder中)。
最佳答案
是的,它应该是线程安全的。DatabaseClient
是使用SessionPool
类的implemented。有关线程安全的说明,请参见SessionPool
implementation。