在spring boot 的 websocket中保存消息到数据库

在spring boot 的 websocket中保存消息到数据库

原因 :由于websocket为实时传输,如果消息发送过于频繁,如果不对消息作处理,在保存消息是会浪费资源,占用时间,导致消息发送失败,进而报错断开连接。
解决方法: 使用多线程,开创新的线程将消息进行异步存储

//声明线程池,大小为100
 private static ExecutorService executorService = Executors.newFixedThreadPool(100);

//在消息发送的方法(@OnMessage)中出发线程池的执行,将消息进行异步发送
 executorService.execute(() -> lessonMsgService.save(sid,roomId,message));

注意:如果消息发送过快,并且使用了UUID对id进行生成,则会导致
两条消息使用同一个id,导致数据保存失败,需要将保存的方法(save)设为同步的。 添加 synchronized 关键字。

你可能感兴趣的:(问题杂谈,java)