You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Project Reactor的Sinks.many()适配不同消费速度的客户端

Project Reactor 广播场景实现困惑与需求

我在实际项目中使用Project Reactor时遇到了问题,需要将事件分发给所有已连接的客户端(浏览器,基于HTTP和Server-Sent Events)。目前我通过单元测试(控制台订阅者)进行测试,同时也完成了基于HTTP推送的SSE示例代码。

核心目标

  • 实现事件广播,支持不同浏览器以不同速度接收事件
  • 当客户端无法跟上事件处理速度时,主动断开其连接,使其需重新连接后才能继续接收流

额外需求

实现智能批处理:当服务器端某客户端的缓冲区累积到X个事件时,调用自定义代码合并事件(例如同key的数据库更新可合并为仅保留最新值的单次更新)

已尝试的Sink实现

  • Sinks.many().replay().limit(0); // latest();
  • Sinks.many().multicast().directAllOrNothing();
  • Sinks.many().multicast().directBestEffort();
  • Sinks.many().multicast().onBackpressureBuffer(8);

内容的提问来源于stack exchange,提问作者Lubo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 16:55:35