WebSocket并发问题

问题

websocket会出现并发报错,多个线程同时操作一个session,会导致报错

image.png

这个错误确实是并发问题而导致的,但是发现后续协同编辑的用户便都不能进入编辑了

是并发问题导致的?

但是经过我的实验,将发生并发的地方用异常捕获,此时虽然依然会捕获并发出现的异常,但是此时前端中两个用户依然可以进行协同编辑。

image.png image.png 难道说异常抛出就会使得用户不能再编辑了?到底是什么原因呢? 然后我便顺着抛出异常的方向查找,**异常会抛到disruptor的消费者中**,难道是由于**消费者异常,导致其他消费者无法进入**?那么我直接在消费者中抛出一个异常,会发生什么。 image.png

果不其然,我在前端只点击了一次进入编辑,就出现了后续用户无法进入编辑的情况,再看后端,没有再报错,

image.png

再看生产者的位置

image.png

也就是说生产者还是会再队列中生产事件,但是没有消费者处理事件,那么原因就是这里了。 但是问了AI,AI的回答是在 Disruptor 中,消费者(事件处理器)出现未处理的异常时,不会导致消费者一直处于轮询状态,也不会直接阻塞其他消费者。那么这里到底是什么原因呢?求大佬解答

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
鱼鳞
下载 APP