Browse Source

add r2dbc-pool to avoid lack of connections (#4881)

Dave Cramer 6 years ago
parent
commit
b62ebd3d16

+ 14 - 0
frameworks/Java/spring-webflux/pom.xml

@@ -25,6 +25,7 @@
         <pgclient.version>0.11.4</pgclient.version>
         <rxjava2-jdbc.version>0.2.4</rxjava2-jdbc.version>
         <r2dbc-postgresql.version>1.0.0.M7</r2dbc-postgresql.version>
+        <r2dbc-pool.version>1.0.0.BUILD-SNAPSHOT</r2dbc-pool.version>
     </properties>
 
     <dependencies>
@@ -65,6 +66,11 @@
             <artifactId>r2dbc-postgresql</artifactId>
             <version>${r2dbc-postgresql.version}</version>
         </dependency>
+        <dependency>
+            <groupId>io.r2dbc</groupId>
+            <artifactId>r2dbc-pool</artifactId>
+            <version>${r2dbc-pool.version}</version>
+        </dependency>
         <dependency>
             <groupId>org.springframework.data</groupId>
             <artifactId>spring-data-r2dbc</artifactId>
@@ -118,6 +124,14 @@
             <name>Spring Snapshots</name>
             <url>https://repo.spring.io/libs-snapshot</url>
         </repository>
+        <repository>
+            <id>spring-snapshots</id>
+            <name>Spring Snapshots</name>
+            <url>https://repo.spring.io/snapshot</url>
+            <snapshots>
+                <enabled>true</enabled>
+            </snapshots>
+        </repository>
     </repositories>
     <pluginRepositories>
         <pluginRepository>

+ 15 - 12
frameworks/Java/spring-webflux/src/main/java/benchmark/config/R2dbcConfig.java

@@ -1,15 +1,18 @@
 package benchmark.config;
 
-import io.r2dbc.postgresql.PostgresqlConnectionConfiguration;
-import io.r2dbc.postgresql.PostgresqlConnectionFactory;
+
+import io.r2dbc.spi.ConnectionFactories;
 import io.r2dbc.spi.ConnectionFactory;
 
+import io.r2dbc.spi.ConnectionFactoryOptions;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Profile;
 import org.springframework.data.r2dbc.core.DatabaseClient;
 
+import static io.r2dbc.spi.ConnectionFactoryOptions.*;
+
 @Configuration
 @Profile("r2dbc")
 @ConfigurationProperties(prefix = "database")
@@ -41,16 +44,16 @@ public class R2dbcConfig {
     }
 
     @Bean
-    public PostgresqlConnectionFactory connectionFactory() {
-        PostgresqlConnectionConfiguration configuration = PostgresqlConnectionConfiguration
-                .builder()
-                .host(host)
-                .port(port)
-                .database(name)
-                .username(username)
-                .password(password)
-                .build();
-        return new PostgresqlConnectionFactory(configuration);
+    public ConnectionFactory connectionFactory() {
+        return ConnectionFactories.get(ConnectionFactoryOptions.builder()
+                .option(DRIVER,"pool")
+                .option(PROTOCOL,"postgresql")
+                .option(HOST, host)
+                .option(PORT, port)
+                .option(USER, username)
+                .option(PASSWORD, password)
+                .option(DATABASE, name)
+                .build());
     }
 
     @Bean