我正在使用 Java 的 Spanner 客户端库,并使用 Spring 配置客户端。
过了一会儿,应用程序开始记录以下消息,但我不明白为什么。应用程序的并发性是最小的。似乎会话没有重用。有什么建议 ?
RESOURCE_EXHAUSTED:池中没有可用的会话。可以通过调用 SessionPoolOptions#Builder#setMaxSessions 来覆盖池中的最大会话数。通过设置 SessionPoolOptions#Builder#setBlockIfPoolExhausted,可以使客户端阻塞而不是失败。
@Configuration
public class SpannerConfig {
@Value("${datasource.instanceId}")
private String instance;
@Value("${datasource.databaseId}")
private String database;
@Bean
public Spanner spannerService() throws IOException {
SessionPoolOptions sessionPoolOptions = SessionPoolOptions.newBuilder()
.setFailIfPoolExhausted()
.setMinSessions(5)
.setMaxSessions(100)
.build();
SpannerOptions options = SpannerOptions.newBuilder()
.setSessionPoolOption(sessionPoolOptions)
.build();
return options.getService();
}
@Bean
public DatabaseClient spannerClient(Spanner spannerService) {
DatabaseId databaseId = DatabaseId.of(spannerService.getOptions().getProjectId(), instance, database);
return spannerService.getDatabaseClient(databaseId);
}
}
浮云间
长风秋雁
相关分类