如何告诉Spring每个websocket连接仅使用一个线程?

时间:2019-04-18 12:02:47

标签: java spring spring-websocket stomp sockjs

我在控制器中有两个@MessageMapping方法。其中一个执行一些初始化逻辑,而另一个处理消息。 创建Websocket连接后,客户端将调用init端点,然后(几乎立即)调用消息处理器端点的两倍。

据我所知,Spring维护两个线程池(用于入站和出站通道),以并行执行。

问题在于init方法花费的时间太长,有必要在消息处理方法之前运行,但是所有方法都是同时执行的。

我怎么告诉Spring它只为websocket连接指定一个线程,以便一次运行一个方法?如果无法执行此操作,则可以提出其他建议。

我已经尝试过this suggestion,但是它只能限制整个入站和出站通道的线程池,我只想限制一个websocket连接。

@MessageMapping("/chat/init")
public void initChat(...) { ... }

@MessageMapping("/chat/send")
public void sendMessage(...) { ... }

0 个答案:

没有答案