Vérifiez comment définir le délai d'expiration lors de la connexion à Spring + HikariCP + MySQL et de l'exécution de SQL.
Un environnement qui passe à l'action
Relations de printemps: 5.0.9 HikariCP:2.7.9 MySQL:5.7
Défini avec setConnectionTimeout () pour une instance de HikariDatasource.
@Bean
HikariDataSource datasource() {
HikariDataSource ds = new HikariDataSource();
ds.setJdbcUrl("jdbc:mysql://localhost:3306/test?useSSL=false&socketTimeout=10");
ds.setConnectionTimeout(250); //★ Ici
ds.setUsername("user");
ds.setPassword("password");
return ds;
}
↓ paramétrage de application.properties
spring.datasource.hikari.connection-timeout=Délai d'expiration (millisecondes)
Ajoutez le paramètre socketTimeout à l'URL JDBC.
@Bean
HikariDataSource datasource() {
HikariDataSource ds = new HikariDataSource();
ds.setJdbcUrl("jdbc:mysql://localhost:3306/test?useSSL=false&socketTimeout=10"); //★ Ici
ds.setConnectionTimeout(250);
ds.setUsername("user");
ds.setPassword("password");
return ds;
}
spring.datasource.url=jdbc:mysql://localhost:3306/test?useSSL=false&socketTimeout=Délai d'expiration (millisecondes)
Voir ↓ pour savoir comment reproduire le retard du réseau dans un environnement Windows. Comment reproduire localement le retard du réseau dans Windows
Le code écrit sous forme d'exemple est Délai de connexion: 250 ms Délai de communication après connexion: 10 ms Par conséquent, vérifiez que l'exception apparaît comme prévu en suivant la procédure ci-dessous.
Voici les étapes.
En regardant l'heure d'exécution du journal, le journal des exceptions n'apparaît pas en fonction de la milliseconde spécifiée. Je pense que la valeur de réglage du délai et la valeur de réglage du délai expirent comme prévu, donc je pense que le jugement du délai lui-même peut être fait, mais ... Un mystère.