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 框架的特性實現復雜數據流邏輯。

測試效果

nginx在配置代理SSE接口時需加一下配置

	        proxy_http_version 1.1;           # 強制使用HTTP/1.1協議?:proxy_buffering off;              # 關閉響應緩沖,確保流式傳輸?proxy_set_header Connection '';

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/77561.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/77561.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/77561.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Zookeeper 可觀測性最佳實踐

Zookeeper 介紹 ZooKeeper 是一個開源的分布式協調服務&#xff0c;用于管理和協調分布式系統中的節點。它提供了一種高效、可靠的方式來解決分布式系統中的常見問題&#xff0c;如數據同步、配置管理、命名服務和集群管理等。本文介紹通過 DataKit 采集 Zookeeper 指標&#…

【安全】DVWA靶場滲透

【安全】DVWA靶場滲透 備注一、環境搭建二、弱口令&#xff08;Brute Force&#xff09;三、命令注入&#xff08;Command Injection&#xff09;四、CSRF&#xff08;Cross Site Request Forgery&#xff09;五、文件包含&#xff08;File Inclusion&#xff09;六、文件上傳&…

Ubuntu22.04安裝QT、px4安裝環境

Ubuntu22.04安裝QGC編譯環境、QT、px4編譯環境 參考文檔版本說明安裝QGC安裝Ubuntu安裝QT配置px4安裝環境出現錯誤怎么辦 參考文檔 PX4 1.15 User Guide 版本說明 PX4&#xff1a;1.15.4 QGC&#xff1a; 安裝QGC 我使用的是pixhawk V5飛控&#xff0c;在QGC4.4 Guide里&a…

積木報表查詢出現jdbc.SQLServerException: 對象名 ‘user_tab_comment 的解決方法

目錄 前言1. 問題所示2. 解決方法前言 ?? 找工作,來萬碼優才:?? #小程序://萬碼優才/r6rqmzDaXpYkJZF 爬蟲神器,無代碼爬取,就來:bright.cn 1. 問題所示 使用帆軟報表無錯,后續使用積木報表查詢出錯: 沒有顯示報表: 具體錯誤信息如下:

c++基礎·左值右值

一、左值與右值的本質特征 1. 基礎定義 左值 (lvalue) ? 可出現在賦值運算符左側 ? 可被取地址&#xff08;有明確存儲位置&#xff09; ? 通常為具名變量&#xff08;如int a 10;中的a&#xff09; 右值 (rvalue) ? 不可出現在賦值左側 ? 不可取地址&#xff08;無持久…

【Rust 精進之路之第9篇-所有權·核心】規則與移動 (Move):Rust 內存安全基石詳解

系列: Rust 精進之路:構建可靠、高效軟件的底層邏輯 作者: 碼覺客 發布日期: 2025年4月20日 引言:沒有 GC,Rust 如何管好內存?答案是所有權! 在我們的 Rust 探索之旅中,我們已經學習了變量、數據類型、控制流、函數和強大的構建工具 Cargo。現在,我們將踏入 Rust 最…

嵌入式學習——opencv圖像庫編程

環境配置 OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一個開源的計算機視覺和圖像處理庫&#xff0c;廣泛用于各種計算機視覺任務&#xff0c;如圖像處理、視頻分析、人臉識別、物體檢測、機器學習等。它提供了豐富的函數和工具&#xff0c;用于處理…

一招破敵,掌控 React 渲染術:createRoot 與 root.render

前言 在這數字江湖中,前端門派百花齊放,React 一門尤為奇特,講究“以虛制實,以組件馭天下”。眼下你我初入江湖,第一關便是掛載組件之術。倘若不懂 createRoot 與 root.render,那就像一個新晉小俠,連起手式都沒學會,點穴還沒碰到 DOM,自己先內傷三分。 來吧,少年!…

Linux常見工具如yum、vim、gcc、gdb的基本使用,以及編譯過程和動靜態鏈接的區別

目錄 一、工具的本質 二、一些常用的工具 1.yum 2.vim 1&#xff09;vim的三種基本模式&#xff1a; 2&#xff09;vim的基本操作 ①命令模式下的基本操作&#xff1a; ②插入模式&#xff1a; ③底行模式&#xff1a; 3&#xff09;vim的配置&#xff1a;讓他變得更好用 3.gcc…

JavaScript 一維數組轉不含零的兩個數

問題描述&#xff1a; /*** param {number} n* return {number[]}*/ var getNoZeroIntegers function(n) {for(let i 1;i<n;i){if(String(i).indexOf(0) -1&&String(n-i).indexOf(0) -1){return [i,n-i]}}};String類型indexOf()函數如果找不到字串則返回-1&…

力扣DAY60-61 | 熱100 | 回溯:單詞搜索、分割回文串

前言 中等 √ 繼續回溯&#xff0c;不知咋地感覺這兩題有點難度&#xff0c;是因為隔一天就手感生疏了嗎&#xff1f; 單詞搜索 我的題解 定義方向數組、二維訪問數組。圖搜索&#xff0c;向上下左右每個方向搜索&#xff0c;需要更新的信息&#xff1a;坐標、是否遍歷過、…

超簡單的git學習教程

本博客僅用于記錄學習和使用 前提聲明全部內容全部來自下面廖雪峰網站&#xff0c;如果侵權聯系我刪除 0.前言 相信有不少人被推薦那個游戲學習git&#xff0c;一個不止我一個完全沒學習過的進去后一臉懵&#xff0c;半天都通不過一關然后就放棄了&#xff0c;我個人覺得那個…

【每日八股】復習 MySQL Day1:事務

文章目錄 復習 MySQL Day1&#xff1a;事務MySQL 事務的四大特性&#xff1f;并發事務會出現什么問題&#xff1f;MySQL 事務的隔離級別&#xff1f;不同事務隔離級別下會發生什么問題&#xff1f;MVCC 的實現原理&#xff1f;核心數據結構版本鏈構建示例可見性判斷算法MVCC 可…

在極狐GitLab 身份驗證中如何使用 OIDC?

極狐GitLab 是 GitLab 在中國的發行版&#xff0c;關于中文參考文檔和資料有&#xff1a; 極狐GitLab 中文文檔極狐GitLab 中文論壇極狐GitLab 官網 使用 OpenID Connect 作為認證提供者 (BASIC SELF) 您可以使用極狐GitLab 作為客戶端應用程序&#xff0c;與 OpenID Connec…

PHP騰訊云人臉核身生成 SDK 接口調用步驟使用簽名

參考騰訊云官方文檔&#xff1a; 人臉核身 生成 SDK 接口調用步驟使用簽名_騰訊云 前提條件&#xff1a;成功獲取NonceTicket。 獲取參考文檔&#xff1a; PHP騰訊云人臉核身獲取NONCE ticket-CSDN博客 function getTxFaceSign(){$appId ;$userId ;$version 1.0.0;$tic…

每日一題算法——鏈表相交

鏈表相交 力扣題目鏈接 暴力解法:飄過 class Solution { public:ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {ListNode * cur headA;while(cur ! NULL){ListNode* curb headB;while(curb ! NULL){if(curbcur){return cur;}curb curb->next;}cu…

詳解Windows(一)——系統盤下目錄及文件詳解

引言 你是否曾經好奇過電腦里那些神秘的文件夾都是干什么用的&#xff1f;為什么有些文件是.exe而有些是.dll&#xff1f;不同的圖片格式.jpg和.png到底有什么區別&#xff1f;如果你對這些問題感到困惑&#xff0c;這篇文章就是為你準備的。今天&#xff0c;我們將以通俗易懂…

大模型賦能工業制造革新:10個顯效可落地的應用場景

在工業4.0的洶涌浪潮中&#xff0c;制造業正面臨著前所未有的轉型挑戰。傳統制造模式在效率、成本、質量等方面逐漸難以滿足市場需求&#xff0c;企業急需借助新技術實現數字化轉型&#xff0c;以提升自身競爭力。在此背景下&#xff0c;基于先進的數據分析技術、大模型、知識圖…

AI語音助手 React 組件使用js-audio-recorder實現,將獲取到的語音轉成base64發送給后端,后端接口返回文本內容

頁面效果&#xff1a; js代碼&#xff1a; import React, { useState, useRef, useEffect } from react; import { Layout, List, Input, Button, Avatar, Space, Typography, message } from antd; import { SendOutlined, UserOutlined, RobotOutlined, AudioOutlined, Stop…

pycharm無法識別到本地python的conda環境解決方法

問題一 現象描述&#xff1a; 本地已經安裝了conda&#xff0c;但在pycharm中選擇conda環境卻識別不到&#xff0c; 解決方法&#xff1a;手動輸入conda path&#xff0c;點擊R eload environments基本就能修復&#xff0c;比如我的路徑如下 /Users/test/conda/miniconda3/b…