Websockets onMessage Lock



我正在使用websocket客户端的python和java实现。然而,由于onMessage是异步的,它将立即开始执行,即使有另一个函数正在执行。我如何确保每个onMessage函数在处理下一个消息之前完全完成。谢谢!

编辑:我订阅了多个通道,无论哪个通道发送消息,我的onMessage处理程序都将处理该消息。我需要我的onMessage处理程序在开始处理下一条消息之前完全处理它接收到的每条消息,但是我不能丢失任何消息。

这听起来只是一个并发问题。这个怎么样?

private final Object onMessageLock = new Object();
@OnMessage
public void onMessage(String message, Session session)
{
    synchronized (onMessageLock)
    {
        // Handle the message here.
    }
}

我测试了Takahiko提出的解决方案。它只在一个客户端上工作。来自不同客户端的消息仍将被并行处理。

如果你想在之前的消息被处理完之后再处理所有的消息(不管发送它的客户端是什么),你必须将Lock对象设置为静态:

private static final Object onMessageLock = new Object();

相关内容

  • 没有找到相关文章

最新更新