瀏覽代碼

Improvements to webflux (#5521)

* Improvements to webflux

* Fix return type

* Fix variable name
Jeffrey Ye 5 年之前
父節點
當前提交
0035eec0ca
共有 1 個文件被更改,包括 10 次插入8 次删除
  1. 10 8
      frameworks/Java/spring-webflux/src/main/java/benchmark/web/WebfluxHandler.java

+ 10 - 8
frameworks/Java/spring-webflux/src/main/java/benchmark/web/WebfluxHandler.java

@@ -51,12 +51,13 @@ public class WebfluxHandler {
     public Mono<ServerResponse> queries(ServerRequest request) {
     public Mono<ServerResponse> queries(ServerRequest request) {
         int queries = getQueries(request);
         int queries = getQueries(request);
 
 
-        Mono<World>[] worlds = new Mono[queries];
-        Arrays.setAll(worlds, i -> dbRepository.getWorld(randomWorldNumber()));
+        Mono<List<World>> worlds = Flux.range(0, queries)
+                .flatMap(i -> dbRepository.getWorld(randomWorldNumber()))
+                .collectList();
 
 
         return ServerResponse.ok()
         return ServerResponse.ok()
                 .contentType(MediaType.APPLICATION_JSON)
                 .contentType(MediaType.APPLICATION_JSON)
-                .body(Flux.merge(worlds).collectList(), new ParameterizedTypeReference<List<World>>() {
+                .body(worlds, new ParameterizedTypeReference<List<World>>() {
                 });
                 });
     }
     }
 
 
@@ -74,14 +75,15 @@ public class WebfluxHandler {
     }
     }
 
 
     public Mono<ServerResponse> updates(ServerRequest request) {
     public Mono<ServerResponse> updates(ServerRequest request) {
-        int count = getQueries(request);
-        Mono<World>[] worlds = new Mono[count];
-
-        Arrays.setAll(worlds, i -> dbRepository.findAndUpdateWorld(randomWorldNumber(), randomWorldNumber()));
+        int queries = getQueries(request);
+        
+        Mono<List<World>> worlds = Flux.range(0, queries)
+                .flatMap(i -> dbRepository.findAndUpdateWorld(randomWorldNumber(), randomWorldNumber()))
+                .collectList();
 
 
         return ServerResponse.ok()
         return ServerResponse.ok()
                 .contentType(MediaType.APPLICATION_JSON)
                 .contentType(MediaType.APPLICATION_JSON)
-                .body(Flux.merge(worlds).collectList(), new ParameterizedTypeReference<List<World>>() {
+                .body(worlds, new ParameterizedTypeReference<List<World>>() {
                 });
                 });
     }
     }