RabbitMQ3.7以上Web-stomp不在支持websocket模拟
问题
在工作中,项目引入了RabbitMQ作为中间件,其中一个需求前后端异步请求实现中,用到了web-stomp。前端连接中间件订阅队列,消费处理事件,后端往队列里面发送事件数据,为了提升前端浏览器得兼容性问题(这么猜测的,我也搞不懂前辈为什么要用,问了没说个所以然),前端采用得是SockeJS/stomp模拟websocket通讯。当时rabbitmq版本是3.6;一切正常。
在后面项目迁移时,项目重新部署,新的服务器rabbit版本安装了3.7.9版本,发现前端怎么也连接不上了,排查发现,url为:/STOMP/info的请求一直404;在网上找了半天一直没找到相同的问题(可能现在大家都直接用websocket连接了,而且socketJS这种真的没发现有多少在用),在GitHub上rabbit项目缺陷中,找到了有人咨询,但是一直没人回复。
排查解决
没法,只能自己排查;项目源码没动,只有版本变了,那只有时版本问题;但是服务器上的其他项目已经在用当前的新版本,装回去代价太大了,只能去Rabbit官网找版本日志。翻了半天,才发现在3.7.0以后不在支持websocket模拟,如图。
又找了找,看看有没有SocketJS的介绍,找了半天没找到,在快放弃的时候在它的论坛里找了一个2011年发布的介绍,如图
结论
看了这个2011年发布的文章,也就是说SocketJS就是webSocket的仿真模拟,而在3.7.0的更新日志中,webSocket的模拟已经不再支持。
上一篇:
Java架构师技术进阶路线图