WebFlux异步处理

时间:2017-12-18 16:28:10

标签: java spring spring-webflux

我正在尝试评估Spring WebFlux和反应式处理的优势。为此,我实施了一个带有码头服务器设置的小型项目,它可以通过同步球衣,异步球衣和弹簧网络助焊剂暴露相同的端点。

可以在https://github.com/aakhmerov/nio-test

找到存储库

据我所知,目前的实施并不比通过泽西实施的同步处理快。这让我觉得我在设置中犯了一些错误。

Flux设置通过类

完成注释

com.aakhmerov.test.flux.FluxConfig:

@Configuration
@ComponentScan(basePackages = "com.aakhmerov.test.flux")
@EnableWebFlux
public class FluxConfig {
}

com.aakhmerov.test.flux.FluxStatusRestService:

@RestController
@RequestMapping(value = "/flux/status")
public class FluxStatusRestService {

  @Autowired
  private StatusCheckingService statusCheckingService;

  @GetMapping("/connection")
  public Mono<ConnectionStatusDto> getConnectionStatus() {
    ConnectionStatusDto result = 
      statusCheckingService.getConnectionStatus();
    return Mono.just(result);
  }
}

然后将其包装到servlet中并插入到嵌入式jetty服务器中。问题在于它是否正在使用开箱即用的异步边界,或者需要一些额外的配置。

以下是测试运行的示例结果:

Endpoint: [http://localhost:8090/api/status/async/threaded-connection] 
 error count [0] 
 avg duration [3993] ms

Endpoint: [http://localhost:8090/api/status/connection] 
 error count [0] 
 avg duration [4595] ms

Endpoint: [http://localhost:8090/api/status/async/unmanaged-threaded-connection] 
 error count [0] 
 avg duration [2455] ms

Endpoint: [http://localhost:8090/flux/status/connection] 
 error count [0] 
 avg duration [4850] ms

Endpoint: [http://localhost:8090/api/status/async/connection] 
 error count [0] 
 avg duration [1963] ms

我并没有声称这个测试在任何形式上都是完美的,但是webflux端点目前还远远落后,这让我想知道那里出了什么问题。

提前谢谢你。

0 个答案:

没有答案