ssm集成websocket实现消息转发、持久化、消息查询、集群session数据共享

本文记录了在基本SSM框架中集成WebSocket实现聊天功能时遇到的问题及解决方案。针对消息持久化,采用了内存缓存并定时批量保存至数据库以降低数据库压力。对于服务层获取失败,通过手动加载Spring配置文件解决。为防止消息丢失,对静态消息集合进行深拷贝。在无中间件如redis的情况下,利用Nginx将聊天请求转发至同一服务器以实现session数据共享。
摘要由CSDN通过智能技术生成

1、本文章仅记录实现聊天功能遇到的一些问题及处理过程,代码网上几乎都有

2、开发环境是基本的ssm框架,集成websocket,无redis、kafka、mq

3、遇到的问题:消息持久化的方式、获取service层失败、消息丢失、两台服务器之间session数据如何共享(取巧)

以下是解决问题方法:

        消息持久化:如果是每发送一条消息就往数据插入一次,在并发不高的情况下可以这样做,但是并发比较多的情况下,频繁io,这无疑会对数据库造成很大的压力,所以我在内存中创建一个静态的集合去保存消息记录,每200条保存一次数据到数据库,这样以来,数据库的压力会小很多

获取service失败:手动加载spring的配置文件

消息丢失:由于内存中消息集合是静态的,在别的类中引用这个静态集合,要进行深拷贝

session数据共享:因为本项目无redis、kafka、mq等中间件,所以走了取巧的方式;将所有的聊天请求通过Nginx统一转发到同一台服务器,项目中采用的方式是监听端口号进行实现的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值