春季启动中websocket的互斥锁

Posted

技术标签:

【中文标题】春季启动中websocket的互斥锁【英文标题】:Mutex for websocket in spring boot 【发布时间】:2017-11-08 11:00:37 【问题描述】:

我有一个问题,我不知道要搜索什么。 我有一个 spring boot 应用程序,它通过带有 stomp javascript 客户端的 web socket 广播消息。问题是我是否可以在消息发送时锁定消息,因为我不希望任何人同时发送另一条消息。我想做的系统就像一个红绿灯。 如果你能给我一个例子或寻找什么。

【问题讨论】:

可能你会想看看像 Kafka 等消息队列系统。 【参考方案1】:

您应该使用synchronized 关键字并等待客户端响应。 synchronized 关键字确保只有一个线程可以同时执行该方法。而且您需要客户端响应,因为您可以按两秒间隔顺序发送两条消息,但您的客户端会同时收到它们。响应可能是一些虚拟的 ok 消息。

public class Traffic 
    synchronized void Send() 
        // write message to websocket
        // read response from websocket 
    

【讨论】:

同步方法应该在控制器哪里或者websocket配置上? 控制器上的@duricuvlad

以上是关于春季启动中websocket的互斥锁的主要内容,如果未能解决你的问题,请参考以下文章

春季启动从 1.2.0 升级到 2.1.3 后,Websocket 推送通知不起作用

Android websock 应用

如何在 laravel 应用程序中使用 docker 容器启动运行 websockets

websock第一次连不上window

从 Visual Studio 启动时,C# ReleaseMutex() 未在控制台应用程序的多个实例中释放互斥锁

线程锁(互斥锁Mutex)