项目中遇到竞价功能,用户停留在竞价页面,服务端需要及时把竞价信息推送给每一个客户什么是SSE
业务上实现单向通讯有以下两种:特性Spring WebFlux + SSESpring MVC + SseEmitter并发能力高(单线程支持数千毗连)低(受限于线程池巨细)线程占用无独占线程(EventLoop共享)每个推送占用线程池线程代码复杂度简单(内置广播机制)复杂(需手动管理毗连和线程)适用场景新项目/高并发需求旧项目/低并发需求Spring WebFlux + SSE 简单案例
实际业务中,竞价不可能只是单一的一个物品竞价,可能同时存在多个物品竞价
ConcurrentMap dynamicSinks
一个物品竞价map就添加一条
业务结束(某一个竞价结束)调用closeSink
由于这个业务是 竞价,后来订阅的用户只需要获取最新的数据即可
如果后来订阅的用户需要获取之前的汗青数据可以参考
.onBackpressureBuffer()
.replay()
欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |