本文链接: blog.csdn.net/qq_39017153…
版权
28 篇文章1 订阅
订阅专栏
💥💥💥💥💥💥
✴️以Springboot-webflux为例
以下是一个使用Spring WebFlux实现真正的流式编程的案例:
1️⃣. 创建一个Spring Boot项目,并在pom.xml文件中添加以下依赖项:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
</dependencies>
2️⃣. 创建一个控制器类来处理请求和响应:
@RestController
public class UserController {
@GetMapping(value = "/users/stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<User> streamUsers() {
// 模拟从数据库中获取用户列表
List<User> users = Arrays.asList(
new User("John", 25),
new User("Jane", 30),
new User("Bob", 35)
);
// 创建一个无限流,每秒发送一个用户对象
return Flux.interval(Duration.ofSeconds(1))
.zipWith(Flux.fromIterable(users), (i, user) -> user);
}
}
3️⃣. 创建一个User类来表示用户对象:
public class User {
private String name;
private int age;
// 省略构造函数、getter和setter方法
}
- 运行Spring Boot应用程序,并使用浏览器或类似cURL的工具发送GET请求:
- 获取所有用户的请求:http://localhost:8080/users/stream
你将会看到一个持续不断的流式响应,每秒钟返回一个用户对象。这个案例中,我们使用了 @GetMapping 注解来处理GET请求,并设置 produces 属性为 MediaType.TEXT_EVENT_STREAM_VALUE,表示返回的是一个流式响应。使用 Flux.interval(Duration.ofSeconds(1)) 创建一个每秒发送一个值的无限流,并与用户列表进行合并,每秒钟返回一个用户对象。
✴️总结
-
在Java中,HTTP的响应式请求和非响应式请求有以下区别:
-
HTTP协议本身并不直接支持响应式请求,因为HTTP是基于请求-响应模型的。然而,可以通过使用其他技术和协议来实现响应式请求。
-
响应方式:响应式请求是指使用响应式编程模型处理请求和响应。通过使用响应式库(如Spring WebFlux、Reactor等、RxJava等),可以创建流式的数据流,并使用异步和事件驱动的方式处理数据。非响应式请求是指使用传统的同步方式发送请求,并等待整个响应数据完整返回。
-
并发性能:响应式请求能够利用异步和非阻塞的特性,以流式的方式处理数据,提供更好的并发性能。可以处理大量的并发请求,减少线程的阻塞和等待时间。而非响应式请求在处理每个请求时,通常需要创建和维护一个独立的线程,对于大量的并发请求可能导致线程资源的浪费。
-
内存占用:响应式请求通常以流的方式处理数据,可以逐个数据块地处理,避免一次性加载大量数据导致内存占用过高。而非响应式请求需要等待所有响应数据完整返回后才能处理,可能需要一次性加载整个响应数据,可能占用较多内存。
-
异常处理:响应式请求通过响应式库提供的操作符和异常处理机制,可以方便地处理和传播异常。非响应式请求通常需要使用try-catch语句来捕获和处理异常。
-
编程模型:响应式请求使用响应式编程模型,需要使用特定的响应式库和操作符来处理数据流。非响应式请求使用传统的编程模型,可以使用Java的标准库或第三方库来发送请求和处理响应。
- 总之,Java中的响应式请求和非响应式请求在响应方式、并发性能、内存占用、异常处理和编程模型等方面存在差异。根据实际需求和场景,选择合适的请求方式可以提高应用程序的性能和可伸缩性。
确定要放弃本次机会?
福利倒计时
: :
立减 ¥
普通VIP年卡可用
关注关注
8
点赞
-
踩
收藏
觉得还不错?
一键收藏
-
知道了
0 评论
Java http 响应式请求和非响应式请求有什么区别
HTTP协议本身并不直接支持响应式请求,因为HTTP是基于请求-响应模型的。然而,可以通过使用其他技术和协议来实现响应式请求。响应方式:响应式请求是指使用响应式编程模型处理请求和响应。通过使用响应式库(如Spring WebFlux、Reactor等、RxJava等),可以创建流式的数据流,并使用异步和事件驱动的方式处理数据。非响应式请求是指使用传统的同步方式发送请求,并等待整个响应数据完整返回。并发性能:响应式请求能够利用异步和非阻塞的特性,以流式的方式处理数据,提供更好的并发性能。
复制链接
扫一扫
专栏目录
参与评论您还未登录,请先登录后发表或查看评论
04-03
308
2019独角兽企业重金招聘Python工程师标准>>>
...
01-04
1860
02-12
772
非 流式 HTTP 和流式的Websocket 区别
最新发布
08-25
1091
06-12
wiredog:径向式网关:对本地浏览器所有的 Http(s) 请求 和响应进行拦截并重制;也可以插入轻量级BS版抓包软件;
02-20
响应式 web源码 java-dojo-bootstrap-map-js:有关如何通过Dojo-bootstrap使用带有Bootstap的Esr
06-12
rediscala:Scala的 非 阻塞式, 响应式 Redis驱动程序(具有Sentinel支持)
02-25
Android Retrofit和Rx java 的网络 请求
08-31
10-22
1922
06-29
3418
Vue如何对样式进行操作以及 响应式 和 非 响应式 的情况
01-08
1046
[样式操作
原理:Vue样式操作,其实就是对style属性和calss属性进行绑定,达到动态更改其属性值的目的
第一种方式:通过绑定字符串改变样式
\
啦啦啦
\07-12
2114
04-13
5650
05-01
2762
11-02
6620
07-12
2515
文章介绍了 Java 8 中的流式处理,通过几个例子理解什么时候该用流式处理,而什么时候不该用流式处理。
用 Java 写一段 响应式 请求 获取session的代码
03-09
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
孟德爱吃香菜CSDN认证博客专家CSDN认证企业博客
码龄7年
暂无认证
1941积分5092粉丝613获赞51评论633收藏
关注
热门文章
- 如何实现Nacos配置文件动态刷新【四种方式】
12019
- 【Jenkins】部署vue项目(多种方式部署)
8023
- idea .gitignore文件不生效(详细步骤排查)
7011
- Linux CentOS 7.9 如何安装Docker
5598
- Thread.currentThread().interrupt() 用法详解
4755
分类专栏
docker 21篇
k8s 13篇
python
maven 2篇
分布式锁 6篇
lua 2篇
Spring Cloud 9篇
开发工具 9篇
Sentinel 3篇
数据库
mysql 3篇
redis 5篇
mongoDB 1篇
Java 28篇
Spring Boot 13篇
日常问题记录 27篇
linux 13篇
jenkins 8篇
nacos 5篇
并发编程 8篇
vue 4篇
java设计模式 7篇
分布式搜索引擎(ES) 4篇
Java算法 7篇
netty 3篇
最新评论
-
如何实现Nacos配置文件动态刷新【四种方式】 848698119: 真棒,优质博文,点赞
-
vue CryptoJS Aes 加密 解密 fksdskjfzxklzk: 感谢大佬分享好文,学到了不少新知识,支持大佬,期待大佬持续输出优质文章!【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】
-
vue CryptoJS Aes 加密 解密 普通网友: 文章内容通俗易懂,适合不同层次的读者。【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】
-
vue CryptoJS Aes 加密 解密 普通网友: 文章结构严谨有条,层次分明,读起来一点也不费劲,让人受益匪浅。【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】
-
Google浏览器插件推荐 普通网友: 写的很好!我也写了一篇获取【大厂面试真题解析、核心开发学习笔记、最新全套讲解视频、实战项目源码讲义、学习路线简历模板】的文章
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
目录
目录
分类专栏
docker 21篇
k8s 13篇
python
maven 2篇
分布式锁 6篇
lua 2篇
Spring Cloud 9篇
开发工具 9篇
Sentinel 3篇
数据库
mysql 3篇
redis 5篇
mongoDB 1篇
Java 28篇
Spring Boot 13篇
日常问题记录 27篇
linux 13篇
jenkins 8篇
nacos 5篇
并发编程 8篇
vue 4篇
java设计模式 7篇
分布式搜索引擎(ES) 4篇
Java算法 7篇
netty 3篇
目录
评论
查看更多评论
添加红包
祝福语
请填写红包祝福语或标题
红包数量
个
红包个数最小为10个
红包总金额
元
红包金额最低5元
余额支付
当前余额3.43元 前往充值 >
需支付:10.00元
取消确定
下一步
知道了
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
点击重新获取
扫码支付
钱包余额0
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。