stomp与rabbitmq stomp插件

spring官方websocket框架提供stomp协议实现,从stomp协议本身来说,对要实现web长连接服务非常方便,但是“理想”很丰满,stomp协议到stomp插件实现提供方的映射简直是……我说的客气一点,简直是一坨屎

stomp仿照大部分mq规则,分为topic和queue,topic为广播,queue为单播队列,这好理解。但是到了rabbitmq stomp插件这里是什么呢?——对每个用户无论topic还是queue的订阅都设置为queue,这不是rabbitmq的问题,而是spring的问题,spring为每个登陆用户分配一个session,即使同一用户登陆多个session,那么对同一个send to user的queue或者对同一个topic都会为这个订阅单独申请一个rabbitmq里的queue,对于erlang实现的高并发的rabbitmq来说这样实现简单想似乎并无问题,但是问题是每一个rabbitmq里的queue都会占用你内存,一个14k,当大量用户同时登陆的时候你可以想象……没错!内存会爆炸,而实际这些queue都是几乎没有繁忙工作的空队列,虽然订阅了,但是触发时机非常有限,大部分时间都是空的

所以解决方案是什么呢?那就是抛弃stomp提供的便利,自己在应用中实现这种多个用户多个session,同一个session多个订阅的模型

也许吧,框架都是好框架,关键在用的人,但是对于需要高并发和性能的应用来说,框架使用要慎重,因为要实现,必须有为高性能而作的定制化开发,在这时候,框架往往是你通往目标路上的最大绊脚石


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值