1

J'ai un projet de démarrage Spring, dans lequel j'utilise Cassandra comme base de données.Comment ajouter Cassandra MaxRequestsPerConnection en utilisant le fichier de propriétés dans Spring boot

Actuellement, je reçois instance Cassandra par auto-câblage CassandraOperations.

Ma question est:

Comment mettre MaxRequestsPerConnection en utilisant un fichier de propriétés?

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

Actuellement, j'ai ces propriétés dans mon dossier de propriété, mais je ne trouve aucune propriété pour la mise en MaxRequestsPerConnection

Répondre

2

Spring Boot n'offre pas une configuration de toutes les propriétés. Vous pouvez définir un bean ClusterBuilderCustomizer pour personnaliser Cluster instances.

Essayez le code suivant pour déclarer un grain de customizer qui obtient les propriétés à injection qui peut être fourni par un fichier de propriétés (plus d'une manière générale, toute source de propriété disponible pour Spring Boot):

@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); 
    } 
} 

Une alternative à @Value utilise une classe de configuration (annotée avec @ConfigurationProperties qui vous offre un support IDE (tel que l'auto-complétion du nom de propriété)

0

Etape n ° 1 Dans le fichier application.properties, nous devons déclarer la taille du pool local et distant (obligatoire valeur de la taille)

# 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 

Etape n ° 2

dans la configuration Bean:

@Bean ClusterBuilderCustomizer s'il vous plaît obtenir les valeurs en utilisant le code suivant (en utilisant l'annotation @value):

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

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

En utilisant cette classe PoolingOptions, définissez setMaxRequestsPerConnections pour local et distant

HostDistance.LOCAL -- localPool 
HostDistance.REMOTE -- remotePool