1

我有一个Spring引导项目,其中我使用Cassandra作为数据库。如何在Spring引导中使用属性文件添加Cassandra MaxRequestsPerConnection

目前,我通过自动布线CassandraOperations获得了Cassandra实例。

我的问题是

我们如何使用属性文件中设置MaxRequestsPerConnection

# spring.data.cassandra.keyspace-name=event 
# spring.data.cassandra.contact-points=localhost 
# spring.data.cassandra.port=9042 

目前,我有我的属性文件这些属性,但我没有发现任何属性设置MaxRequestsPerConnection

回答

2

春天开机不提供所有属性的配置。您可以定义一个ClusterBuilderCustomizer bean来自定义Cluster实例。

尝试使用以下代码来声明一个定制豆它获取属性注射可经由属性来提供文件(更一般地讲,弹簧引导可用任何属性源):

@Configuration 
public class MyConfiguration { 

    @Bean 
    ClusterBuilderCustomizer clusterBuilderCustomizer(
      @Value("${spring.data.cassandra.pool.max-requests-local:10}") int local, 
      @Value("${spring.data.cassandra.pool.max-requests-remote:5}") int remote) { 

     PoolingOptions options = new PoolingOptions(); 

     options.setMaxRequestsPerConnection(HostDistance.LOCAL, local); 
     options.setMaxRequestsPerConnection(HostDistance.REMOTE, remote); 

     return builder -> builder.withPoolingOptions(options); 
    } 
} 

的替代方法@Value使用配置类(@ConfigurationProperties注解,让你的IDE支持(如属性名称自动完成)

0

步骤号:1 在application.properties文件中,我们要声明的本地和远程池大小(必填尺寸值)

# spring.data.cassandra.keyspace-name=event 
# spring.data.cassandra.contact-points=localhost 
# spring.data.cassandra.port=9042 
# spring.data.cassandra.pool.max-requests-local:20 
# spring.data.cassandra.pool.max-requests-remote:10 

步骤否:在bean配置2

@Bean ClusterBuilderCustomizer请通过下面的代码(使用@value注解)得到的值:

@Value("${spring.data.cassandra.pool.max-requests-local}") 
    private int localPool; 

    @Value("${spring.data.cassandra.pool.max-requests-remote}") 
    private int remotePool; 

通过使用此PoolingOptions类为本地和远程设置setMaxRequestsPerConnections

HostDistance.LOCAL -- localPool 
HostDistance.REMOTE -- remotePool 
相关问题