StompBrokerRelayMessageHandler - 许多日志错误

时间:2015-08-18 12:09:06

标签: java spring websocket stomp

我们在stomp和sockjs上使用带有tomcat 7的弹簧腹板。 我们的日志中包含以下错误:

[WEBAPP] 16 Aug 2015 08:11:24 ERROR StompBrokerRelayMessageHandler - Failed to forward DISCONNECT session=7ufvyfvf
[WEBAPP] 16 Aug 2015 08:13:47 ERROR StompBrokerRelayMessageHandler - Failed to forward DISCONNECT session=d017bxnq

任何想法为什么?我们如何删除\缓解这个?

1 个答案:

答案 0 :(得分:5)

对不起,我有点晚了。然而,遇到了相同/类似的问题。我猜你正在使用像rabbitmq这样的消息经纪人。

ERROR StompBrokerRelayMessageHandler:584 - TCP connection failure in session uwdglayp: Transport failure: Connection reset by peer

有时它是一个前向失败,通常是连接失败。

我做了什么?在将日志记录级别更改为debug之后,我发现spring应用程序向messagebroker发送了两条DISCONNECT消息。

在客户端调用stomp.disconnect()会导致发送DISCONNECT消息(STOMP)并关闭套接字(socketJS)。

StompBrokerRelayMessageHandler向Broker通知DISCONNECT消息,并另外发送DISCONNECT,因为套接字由客户端关闭,都是异步。 Spring无法捕获第二个断开连接,第二个断开连接将发生错误。

什么指定STOMP? (DISCONNECT SPEC

  

客户端可以通过关闭套接字随时断开与服务器的连接,但无法保证服务器已收到先前发送的帧

我的解决方案: 修改STOMP客户端,只关闭套接字而不发送DISCONNECT消息(客户端将关闭套接字)

另一个解决方案: 仅发送DISCONNECT消息(弹簧将关闭套接字)

我会检查STOMP的其他实现,以找到更好的解决方案。