Skip to content

Commit 25b97fd

Browse files
authored
Leverage R2BDC recent optimizations (#9341)
Should improve some DB tests very significantly under high load!
1 parent 8e053f0 commit 25b97fd

File tree

2 files changed

+6
-15
lines changed

2 files changed

+6
-15
lines changed

frameworks/Java/spring-webflux/pom.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
<properties>
2020
<java.version>21</java.version>
2121
<jstachio.version>1.3.6</jstachio.version>
22+
<r2dbc-pool.version>1.0.2.RELEASE</r2dbc-pool.version>
23+
<r2dbc-postgresql.version>1.0.7.RELEASE</r2dbc-postgresql.version>
2224
</properties>
2325

2426
<dependencies>

frameworks/Java/spring-webflux/src/main/java/benchmark/repository/R2dbcDbRepository.java

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66

77
import benchmark.model.Fortune;
88
import benchmark.model.World;
9-
import io.r2dbc.spi.Connection;
10-
import io.r2dbc.spi.ConnectionFactory;
119
import reactor.core.publisher.Flux;
1210
import reactor.core.publisher.Mono;
1311

@@ -16,12 +14,9 @@
1614
public class R2dbcDbRepository implements DbRepository {
1715

1816
private final DatabaseClient databaseClient;
19-
private final ConnectionFactory connectionFactory;
20-
private final ThreadLocal<Mono<? extends Connection>> conn = new ThreadLocal<>();
2117

2218
public R2dbcDbRepository(DatabaseClient databaseClient) {
2319
this.databaseClient = databaseClient;
24-
this.connectionFactory = databaseClient.getConnectionFactory();
2520
}
2621

2722
@Override
@@ -54,16 +49,10 @@ public Mono<World> findAndUpdateWorld(int id, int randomNumber) {
5449

5550
@Override
5651
public Flux<Fortune> fortunes() {
57-
return getConnection()
58-
.flatMapMany(conn -> conn.createStatement("SELECT id, message FROM " + "fortune").execute())
59-
.flatMap(result -> result.map(r -> new Fortune(r.get(0, Integer.class), r.get(1, String.class))));
60-
}
61-
62-
private Mono<? extends Connection> getConnection() {
63-
if (this.conn.get() == null) {
64-
this.conn.set(Mono.from(connectionFactory.create()).cache());
65-
}
66-
return this.conn.get();
52+
return databaseClient
53+
.sql("SELECT id, message FROM fortune")
54+
.mapProperties(Fortune.class)
55+
.all();
6756
}
6857

6958
}

0 commit comments

Comments
 (0)