【发布时间】:2020-09-13 06:33:21
【问题描述】:
我在部署到PCF的项目中设置我的DataSource,并且sqlserver存在性能问题,所以我想添加属性:sendStringParametersAsUnicode=false来解决这个问题,就像本地的jdbcUrl设置:url: jdbc:sqlserver://localhost:1433;databaseName=localdatasource;sendStringParametersAsUnicode=false,
但我尝试了以下两个代码,似乎connectionConfig不起作用。
代码1参考Spring Cloud Spring Service Connector guide
@Configuration
@Profile({"dev", "sit", "uat", "prod"})
@Slf4j
public class CloudConfig extends AbstractCloudConfig {
@Value("${datasourceinfo.min-idle}")
private int dataSourceMinPoolSize = 20;
@Value("${datasourceinfo.max-active}")
private int dataSourceMaxPoolSize = 100;
@Value("${datasourceinfo.max-wait}")
private int dataSourceMaxWaitTime = -1;
@Value("${datasourceinfo.azureDatabase}")
private String azureDatabase;
@Bean
@Primary
public DataSource dataSource() {
PooledServiceConnectorConfig.PoolConfig poolConfig = new PooledServiceConnectorConfig.PoolConfig(dataSourceMinPoolSize, dataSourceMaxPoolSize, dataSourceMaxWaitTime);
DataSourceConfig.ConnectionConfig connConfig = new DataSourceConfig.ConnectionConfig("sendStringParametersAsUnicode=false");
DataSourceConfig dbConfig = new DataSourceConfig(poolConfig, connConfig);
log.info("======================init dataSource connProperties {}",dbConfig);
return connectionFactory().dataSource(azureDatabase, dbConfig);
}
}
Code2:遵循此处的建议:Spring Cloud Connectors issue
@Primary
public DataSource dataSource() {
PooledServiceConnectorConfig.PoolConfig poolConfig = new PooledServiceConnectorConfig.PoolConfig(dataSourceMinPoolSize, dataSourceMaxPoolSize, dataSourceMaxWaitTime);
Map<String, Object> connProperties = new HashMap<>();
connProperties.put("connectionProperties","sendStringParametersAsUnicode=false");
DataSourceConfig dbConfig = new DataSourceConfig(poolConfig,null,null,connProperties);
log.info("======================init dataSource connProperties {}",dbConfig);
return connectionFactory().dataSource(azureDatabase, dbConfig);
}
日志如下:
2020-05-26T20:13:48.724+08:00 [APP/PROC/WEB/0] [OUT] DEBUG . [26-05-2020 20:13:48.724+0800] [main] [springAppName_IS_UNDEFINED,,,] [c.z.h.HikariConfig] HikariPool-1 - configuration:
2020-05-26T20:13:48.727+08:00 [APP/PROC/WEB/0] [OUT] DEBUG . [26-05-2020 20:13:48.727+0800] [main] [springAppName_IS_UNDEFINED,,,] [c.z.h.HikariConfig] connectionTestQuery............."SELECT 1"
2020-05-26T20:13:48.727+08:00 [APP/PROC/WEB/0] [OUT] DEBUG . [26-05-2020 20:13:48.727+0800] [main] [springAppName_IS_UNDEFINED,,,] [c.z.h.HikariConfig] connectionTimeout...............30000
2020-05-26T20:13:48.728+08:00 [APP/PROC/WEB/0] [OUT] DEBUG . [26-05-2020 20:13:48.728+0800] [main] [springAppName_IS_UNDEFINED,,,] [c.z.h.HikariConfig] driverClassName................."com.microsoft.sqlserver.jdbc.SQLServerDriver"
2020-05-26T20:13:48.729+08:00 [APP/PROC/WEB/0] [OUT] DEBUG . [26-05-2020 20:13:48.729+0800] [main] [springAppName_IS_UNDEFINED,,,] [c.z.h.HikariConfig] jdbc4ConnectionTest.............false
2020-05-26T20:13:48.729+08:00 [APP/PROC/WEB/0] [OUT] DEBUG . [26-05-2020 20:13:48.729+0800] [main] [springAppName_IS_UNDEFINED,,,] [c.z.h.HikariConfig] jdbcUrl.........................**jdbc:sqlserver://myIp:1433;database=devDb;user=u4a1780c36;password=<masked>;Encrypt=true;TrustServerCertificate=false;HostNameInCertificate=*.database.windows.net;loginTimeout=30;**
2020-05-26T20:13:48.729+08:00 [APP/PROC/WEB/0] [OUT] DEBUG . [26-05-2020 20:13:48.729+0800] [main] [springAppName_IS_UNDEFINED,,,] [c.z.h.HikariConfig] leakDetectionThreshold..........0
2020-05-26T20:13:48.730+08:00 [APP/PROC/WEB/0] [OUT] DEBUG . [26-05-2020 20:13:48.729+0800] [main] [springAppName_IS_UNDEFINED,,,] [c.z.h.HikariConfig] maxLifetime.....................1800000
2020-05-26T20:13:48.730+08:00 [APP/PROC/WEB/0] [OUT] DEBUG . [26-05-2020 20:13:48.730+0800] [main] [springAppName_IS_UNDEFINED,,,] [c.z.h.HikariConfig] maximumPoolSize.................100
2020-05-26T20:13:48.730+08:00 [APP/PROC/WEB/0] [OUT] DEBUG . [26-05-2020 20:13:48.730+0800] [main] [springAppName_IS_UNDEFINED,,,] [c.z.h.HikariConfig] metricRegistry..................none
2020-05-26T20:13:48.730+08:00 [APP/PROC/WEB/0] [OUT] DEBUG . [26-05-2020 20:13:48.730+0800] [main] [springAppName_IS_UNDEFINED,,,] [c.z.h.HikariConfig] metricsTrackerFactory...........com.zaxxer.hikari.metrics.micrometer.MicrometerMetricsTrackerFactory@75add13c
2020-05-26T20:13:48.730+08:00 [APP/PROC/WEB/0] [OUT] DEBUG . [26-05-2020 20:13:48.730+0800] [main] [springAppName_IS_UNDEFINED,,,] [c.z.h.HikariConfig] minimumIdle.....................20
2020-05-26T20:13:48.730+08:00 [APP/PROC/WEB/0] [OUT] DEBUG . [26-05-2020 20:13:48.730+0800] [main] [springAppName_IS_UNDEFINED,,,] [c.z.h.HikariConfig] password........................<masked>
2020-05-26T20:13:48.730+08:00 [APP/PROC/WEB/0] [OUT] DEBUG . [26-05-2020 20:13:48.730+0800] [main] [springAppName_IS_UNDEFINED,,,] [c.z.h.HikariConfig] poolName........................"HikariPool-1"
从日志中,我发现 PoolConfig [minimumIdle=20,maximumPoolSize=100] 已更新,但 ConnectionConfig 被忽略,我不知道发生了什么或有什么问题用我的代码。 谢谢。
【问题讨论】:
-
您从哪里获得连接 URL?它来自绑定服务吗?如果是这样,那是由经纪人创建的,还是用户提供的服务?还是来自其他地方?如果可能,最简单的选项是编辑 jdbc URL 并附加选项。那些应该通过。
-
连接 URL 是从 PCF 上的绑定服务获取的,所以我无法直接编辑 jdbc URL。
-
@Angle.Bracket 你能帮忙吗?
标签: java sql-server spring-boot cloud-foundry spring-cloud-connectors