springWebflux-尝试使用

webflux是什么

为什么要用webflux

在业务系统响应长时可以使用 io复用 使得系统吞吐量增大

但是必须要在网关进行限流,但是实际上网关都是会进行限流的

配置webflux

环境需求

​ spring boot 2

依赖文件



    org.springframework.boot
    spring-boot-starter-webflux



    mysql
    mysql-connector-java
    5.1.16

静态资源配置

spring.webflux.static-path-pattern=/resources/**

怎么使用webflux

注意

以下写法不正确:

 Mono.just(null)

注解路由

@RestController
@RequestMapping("/users")
public class MyRestController {

	@GetMapping("/{user}")
	public Mono getUser(@PathVariable Long user) {
		// ...
	}

	@GetMapping("/{user}/customers")
	public Flux getUserCustomers(@PathVariable Long user) {
		// ...
	}

	@DeleteMapping("/{user}")
	public Mono deleteUser(@PathVariable Long user) {
		// ...
	}

}

关于mono和flux的写法

Mono mono = Mono.just("here is a data");

直接路由

测试

依赖:


    org.springframework.boot
    spring-boot-starter-test
    test

案例:

@RunWith(SpringRunner.class)
@WebFluxTest(controllers = MessageController.class)
public class DemoApplicationTests {
    @Autowired
    WebTestClient client;

    @Test
    public void getAllMessagesShouldBeOk() {
        client.get().uri("/").exchange().expectStatus().isOk();
    }
}

使用postman进行接口测试时发现:

在模拟业务时间5秒钟的时候,spring mvc性能明显慢与spring webflux

你可能感兴趣的:(架构师成长之路)