我在控制器中有两个@MessageMapping方法。其中一个执行一些初始化逻辑,而另一个处理消息。 创建Websocket连接后,客户端将调用init端点,然后(几乎立即)调用消息处理器端点的两倍。
据我所知,Spring维护两个线程池(用于入站和出站通道),以并行执行。
问题在于init方法花费的时间太长,有必要在消息处理方法之前运行,但是所有方法都是同时执行的。
我怎么告诉Spring它只为websocket连接指定一个线程,以便一次运行一个方法?如果无法执行此操作,则可以提出其他建议。
我已经尝试过this suggestion,但是它只能限制整个入站和出站通道的线程池,我只想限制一个websocket连接。
@MessageMapping("/chat/init")
public void initChat(...) { ... }
@MessageMapping("/chat/send")
public void sendMessage(...) { ... }