Spring WebSocket停止工作,如何找到原因?

Spring WebSocket stopped working, how to find the reason?

我不明白为什么我的 spring boot(版本 1.4.1)基于 spring-boot-starter-tomcatspring-boot-starter-websocket 的应用程序有时会停止工作。

具体来说,我的应用程序提供的目的是向客户端提供一些有关系统状态的实时事件。这些事件可以是周期性的,也可以是响应用户输入的,并且事件是通过 SimpMessagingTemplate 的 convertAndSend 方法发送的。

有时所有事件都停止工作,但我在日志中找不到任何证据:也没有异常,BrokerAvailabilityEvents 也没有说 Broker 失败。

我不知道如何修复它。

原来是SimpMessagingTemplate的convertAndSend方法没有被调用,因为负责代表事件调用它的线程被卡住了,冻结了所有的事件通知链。