当前位置: 首页 > news >正文

Spring Boot 项目中发布流式接口支持实时数据向客户端推送

1、pom依赖添加

       <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId></dependency>

2、事例代码

package com.pojo.prj.controller;import com.pojo.common.core.utils.StringUtils;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;import java.time.Duration;
import java.util.Map;@RestController
public class TestController {@GetMapping(value = "/stream/flux", produces = MediaType.TEXT_EVENT_STREAM_VALUE)public Flux<Map<String,String>> streamFlux() {// 每隔 1 秒发送一条数据,共发送 10 条String query = "select * from test";return Flux.interval(Duration.ofSeconds(1)).map(sequence -> StringUtils.streamFlux(query,sequence)).take(10);}
}

StringUtils.streamFlux的方法

 public static Map<String, String> streamFlux(String query, Long sequence) {Map<String, String> map = new HashMap<>();map.put(sequence + "", query + " " + sequence);return map;}

  1. 在 @GetMapping 中设置 produces = MediaType.TEXT_EVENT_STREAM_VALUE 表示以 SSE 格式推送数据。
  2. Flux.interval(...) 每隔一秒生成一个递增的数字序列,然后通过 map 操作转换成map消息 。
  3. take(10) 限制只发送 10 个数据,流结束后自动关闭。

这种方式适用于响应式编程,并且可以充分利用 Reactor 框架的特性实现复杂数据流逻辑。

测试效果

 

相关文章:

  • 【KWDB创作者计划】_KwDB2.2.0深度实践:从存储引擎到物联网场景的多模数据库实战
  • XSS之同源、跨域、内容安全策略
  • C语言——数组
  • 【网络技术_域名解析DNS】一、DNS 基础剖析及其原理
  • [轻量化超分]CAMixerSR: Only Details Need More “Attention“
  • HTML5好看的水果蔬菜在线商城网站源码系列模板5
  • 有什么工具可以在家连接到公司内网?局域网址提供异地公网访问的那些常用方法
  • CentOS系统-超详细的Kubernetes集群搭建教程(kubernetes:1.28.2)
  • Rust生命周期、文件与IO
  • 20.3 使用技巧3
  • Qwen2.5-VL视觉大语言模型复现过程,没碰到什么坑
  • 【AI量化第24篇】KhQuant 策略框架深度解析:让策略开发回归本质——基于miniQMT的量化交易回测系统开发实记
  • Go语言入门到入土——三、处理并返回异常
  • Python爬虫之线程、进程、协程详解
  • Python 实现日志备份守护进程
  • JavaScript模块化开发:CommonJS、AMD到ES模块
  • AUTOSAR图解==>AUTOSAR_SWS_CryptoDriver
  • blender里面的材质列表
  • JavaEE——线程安全
  • Java工具类——实体类列表写入excel
  • 婚姻登记“全国通办”首日观察:数据多跑路,群众少跑腿
  • 时代中国控股:前4个月销售额18.1亿元,境外债重组协议押后聆讯至5月底
  • 心相印回应官方旗舰店客服辱骂消费者:正排查
  • 深入贯彻中央八项规定精神学习教育中央第六指导组指导督导中国工商银行见面会召开
  • 上海一中院一审公开开庭审理被告人胡欣受贿案
  • 观察|印巴交火开始升级,是否会升级为第四次印巴战争?