我正在尝试评估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端点目前还远远落后,这让我想知道那里出了什么问题。
提前谢谢你。