Browse Source

Use JDK 11, Micronaut 1.0 and Single result (#4171)

Graeme Rocher 6 years ago
parent
commit
0117e1d4dd

+ 3 - 3
frameworks/Java/micronaut/micronaut.dockerfile

@@ -1,10 +1,10 @@
-FROM maven:3.5.3-jdk-10-slim as maven
+FROM adoptopenjdk/maven-openjdk11:latest as maven
 WORKDIR /micronaut
 WORKDIR /micronaut
 COPY src src
 COPY src src
 COPY pom.xml pom.xml
 COPY pom.xml pom.xml
 RUN mvn package -q
 RUN mvn package -q
 
 
-FROM openjdk:10-jre-slim
+FROM adoptopenjdk/openjdk11:jdk-11.28-alpine-slim
 WORKDIR /micronaut
 WORKDIR /micronaut
 COPY --from=maven /micronaut/target/hello-micronaut-0.1.jar app.jar
 COPY --from=maven /micronaut/target/hello-micronaut-0.1.jar app.jar
-CMD ["java", "-server", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-XX:+AggressiveOpts", "-Dmicronaut.environments=benchmark", "-Dlog-root-level=OFF", "-jar", "app.jar"]
+CMD ["java", "-server", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-Dmicronaut.environments=benchmark", "-Dlog-root-level=OFF", "-jar", "app.jar"]

+ 3 - 3
frameworks/Java/micronaut/pom.xml

@@ -6,10 +6,10 @@
     <artifactId>hello-micronaut</artifactId>
     <artifactId>hello-micronaut</artifactId>
     <version>0.1</version>
     <version>0.1</version>
     <properties>
     <properties>
-        <maven.compiler.source>10</maven.compiler.source>
-        <maven.compiler.target>10</maven.compiler.target>
+        <maven.compiler.source>11</maven.compiler.source>
+        <maven.compiler.target>11</maven.compiler.target>
         <exec.mainClass>benchmark.Application</exec.mainClass>
         <exec.mainClass>benchmark.Application</exec.mainClass>
-        <micronaut.version>1.0.0.RC3</micronaut.version>
+        <micronaut.version>1.0.0</micronaut.version>
     </properties>
     </properties>
     <repositories>
     <repositories>
         <repository>
         <repository>

+ 28 - 38
frameworks/Java/micronaut/src/main/java/benchmark/Database.java

@@ -37,14 +37,12 @@ public class Database {
     public Single<World> db() {
     public Single<World> db() {
         return pgPool.rxGetConnection()
         return pgPool.rxGetConnection()
                 .doAfterSuccess(PgConnection::close)
                 .doAfterSuccess(PgConnection::close)
-                .flatMap((connection) -> {
-                    return findRandomWorld(connection.rxPrepare(SELECT_WORLD), null);
-                });
+                .flatMap((connection) -> findRandomWorld(connection.rxPrepare(SELECT_WORLD), null));
     }
     }
 
 
     @Get("/queries")
     @Get("/queries")
-    public Flowable<World> queries(@QueryValue String queries) {
-        return findRandomWorlds(parseQueryCount(queries));
+    public Single<List<World>> queries(@QueryValue String queries) {
+        return findRandomWorlds(parseQueryCount(queries)).toList();
     }
     }
 
 
     @Get(value = "/fortunes", produces = "text/html;charset=utf-8")
     @Get(value = "/fortunes", produces = "text/html;charset=utf-8")
@@ -74,9 +72,7 @@ public class Database {
         return pgPool.rxGetConnection()
         return pgPool.rxGetConnection()
                 .toFlowable()
                 .toFlowable()
                 .doAfterNext(PgConnection::close)
                 .doAfterNext(PgConnection::close)
-                .flatMap((connection) -> {
-                    return findRandomWorlds(connection.rxPrepare(SELECT_WORLD), count);
-                });
+                .flatMap((connection) -> findRandomWorlds(connection.rxPrepare(SELECT_WORLD), count));
     }
     }
 
 
     private Flowable<World> findRandomWorlds(Single<PgPreparedQuery> preparedQuery, int count) {
     private Flowable<World> findRandomWorlds(Single<PgPreparedQuery> preparedQuery, int count) {
@@ -87,41 +83,35 @@ public class Database {
     private Single<List<World>> updateRandomWorlds(int count) {
     private Single<List<World>> updateRandomWorlds(int count) {
         return pgPool.rxGetConnection()
         return pgPool.rxGetConnection()
                 .doAfterSuccess(PgConnection::close)
                 .doAfterSuccess(PgConnection::close)
-                .flatMap(connection -> {
-                        return findRandomWorlds(connection.rxPrepare(SELECT_WORLD), count)
-                                .doOnNext(world -> world.setRandomNumber(nextNumber()))
-                                .toList(count)
-                                .flatMap(worlds -> {
-                                    int worldCount = worlds.size();
-                                    List<Tuple> tuples = new ArrayList<>(worldCount);
-                                    for (int i = 0; i < worldCount; i++) {
-                                        World world = worlds.get(i);
-                                        tuples.add(Tuple.of(world.getRandomNumber(), world.getId()));
-                                    }
-                                    return connection.rxPreparedBatch(UPDATE_WORLD, tuples)
-                                            .map(pgRowSet -> worlds);
-                                });
-
-                });
+                .flatMap(connection -> findRandomWorlds(connection.rxPrepare(SELECT_WORLD), count)
+                        .doOnNext(world -> world.setRandomNumber(nextNumber()))
+                        .toList(count)
+                        .flatMap(worlds -> {
+                            int worldCount = worlds.size();
+                            List<Tuple> tuples = new ArrayList<>(worldCount);
+                            for (World world : worlds) {
+                                tuples.add(Tuple.of(world.getRandomNumber(), world.getId()));
+                            }
+                            return connection.rxPreparedBatch(UPDATE_WORLD, tuples)
+                                    .map(pgRowSet -> worlds);
+                        }));
     }
     }
 
 
     private List<Fortune> findFortunes() {
     private List<Fortune> findFortunes() {
         return pgPool.rxGetConnection()
         return pgPool.rxGetConnection()
                 .doAfterSuccess(PgConnection::close)
                 .doAfterSuccess(PgConnection::close)
-                .flatMap((connection) -> {
-                    return connection.rxPreparedQuery(SELECT_FORTUNE).map((result) -> {
-                        PgIterator iterator = result.iterator();
-                        List<Fortune> fortunes = new ArrayList<>();
-                        while (iterator.hasNext()) {
-                            Row row = iterator.next();
-                            fortunes.add(new Fortune(row.getInteger("id"), row.getString("message")));
-                        }
-                        fortunes.add(new Fortune(0, "Additional fortune added at request time."));
-                        fortunes.sort(Comparator.comparing(Fortune::getMessage));
-
-                        return fortunes;
-                    });
-                }).blockingGet();
+                .flatMap((connection) -> connection.rxPreparedQuery(SELECT_FORTUNE).map((result) -> {
+                    PgIterator iterator = result.iterator();
+                    List<Fortune> fortunes = new ArrayList<>();
+                    while (iterator.hasNext()) {
+                        Row row = iterator.next();
+                        fortunes.add(new Fortune(row.getInteger("id"), row.getString("message")));
+                    }
+                    fortunes.add(new Fortune(0, "Additional fortune added at request time."));
+                    fortunes.sort(Comparator.comparing(Fortune::getMessage));
+
+                    return fortunes;
+                })).blockingGet();
     }
     }
 
 
     private int parseQueryCount(String textValue) {
     private int parseQueryCount(String textValue) {