Reactive方式访问http资源

608 阅读1分钟

WebClient介绍

  • 使用webClient—以响应式Reactive方式,处理http请求的非阻塞式客户端,响应式编程引入spring-boot-starter-webflux,project-reactor
  • 底层支持Http库Reactor Netty——ReactorClientHttpConnector
  • Spring Boot没有自动配置RestTemplate和WebClient客户端,需自己创建
  • WebClient.create()/WebClient.builder()
  • 可以取得Object对象,或者是包含请求头等信息的Entity,发起请求可以用get/post/patch/put/delete
  • 获得结果retrieve()/exchange()
  • 对status做针对性处理onStatus()
  • 应答正文bodyToMono()/bodyToFlux(),Flux是0-N个异步序列,Mono是0或1个,Mono和Flux可以进行相互转化,对Flux计数得到Mono对象,合并两个Mono序列,得到一个Flux对象
  1. 运行时web设为none,不要启动Tomcat,其中main的写法

  2. 响应式编程,得到id=1的coffee信息--nio-4线程

  3. 响应式编程,添加新的咖啡--nio-6线程

  4. 响应式编程,在主线程中打印出所有的咖啡--main
    cdl.await()等待子线程执行完毕,主线程再执行

注意,对于countDownLatch多个子线程,不能根据代码顺序决定执行的顺序,它是多个子线程并发执行的,另外toStram()可以取得所有结果了