获取/设置Spring-Data-Cassanda中的PoolingOptions(启动)
我在我的环境中使用以下依赖项:
- Spring-Boot-starter-Parent-v2.3.5版本
- Spring-Boot-starter-data-Cassandra-ame
- Cassandra-Driver-core(com.datastax.cassandra)-v3.2.0
如何访问我的设置中com.datastax.driver.core.PoolingOptions
中设置的连接池选项?
Spring Data Cassandra(SDC)文档指定以下内容:
AbstractCassandraConfiguration允许您提供各种配置 选项,如初始实体、默认查询选项、池化 选项、插座选项等。
但我无论如何也找不到在DS驱动程序中设置这些池化选项的位置:(
看起来Spring data中的CassandraClusterFactoryBean
和PoolingOptionsFactoryBean
Cassandra已被移除,我不知道如何在没有它们的情况下或通过我编写的AbstractCassandraConfiguration
扩展/实现来获得PoolingOptions
的句柄。
PoolingOptions
Bean呢?
Connection pooling options
cassandra.pool.heartbeat-interval-seconds - heartbeat interval in seconds.
cassandra.pool.idle-timeout-seconds - idle connection timeout in seconds.
cassandra.pool.pool-timeout-millis - timeout for acquiring connection from pool in ms.
cassandra.pool.local.core-connections-per-host - initial number of connections to each "local" host.
cassandra.pool.local.max-connections-per-host - max number of connections to each "local" host.
cassandra.pool.local.max-requests-per-connection - max number of requests per connections to "local" host.
cassandra.pool.local.new-connection-threshold - threshold to trigger new connection to "local" host.
cassandra.pool.remote.core-connections-per-host - initial number of connections to each "remote" host.
cassandra.pool.remote.max-connections-per-host - max number of connections to each "remote" host.
cassandra.pool.remote.max-requests-per-connection - max number of requests per connections to "remote" host.
cassandra.pool.remote.new-connection-threshold - threshold to trigger new connection to "remote" host.
SDC文件中还提到:
将Cluster
和Session
对象合并到一个 因此,所有与集群相关API都是 已删除。
为了反映配置构建器中的更改,ClusterBuilderConfigurer
已重命名为SessionBuilderConfigurer
现在接受CqlSessionBuilder
而不是Cluster.Builder
感谢任何帮助。
解决方案
我设法访问这些配置的方式是通过覆盖CassandraAutoConfiguration类中的cassandraDriverConfigLoaderBean。
此处,在cassandraDriverConfigLoaderBean中,Spring配置映射到Cassandra驱动程序配置。
基本上,我将代码从自动配置复制粘贴到我的项目中,并添加了所需的配置。有一个包含所有所需配置的方便的枚举。@Bean
public DriverConfigLoader cassandraDriverConfigLoader(CassandraProperties properties,
ObjectProvider<DriverConfigLoaderBuilderCustomizer> builderCustomizers) {
.....
}
private Config cassandraConfiguration(CassandraProperties properties) {
CassandraDriverOptions options = new CassandraDriverOptions();
options.add(DefaultDriverOption.CONNECTION_MAX_REQUESTS,30000)
...
}
为了验证是否加载了我的自定义配置,我只在DriverConfig.getDefaultProfile处设置了一个断点
相关文章