【问题标题】:StompBrokerRelayMessageHandler - many log errorsStompBrokerRelayMessageHandler - 许多日志错误
【发布时间】:2015-08-18 12:09:06
【问题描述】:

我们在 stomp 和 sockjs 上使用带有 tomcat 7 的 spring websockets。 我们的日志充满了这样的错误:

[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

任何想法为什么?我们怎样才能消除\减轻这种情况?

【问题讨论】:

    标签: java spring websocket stomp


    【解决方案1】:

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

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

    有时是转发失败,通常是连接失败。

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

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

    StompBrokerRelayMessageHandler 将 DISCONNECT 消息通知 Broker 并另外发送一个 DISCONNECT,因为套接字已被客户端关闭,两者都是异步的。 Spring不可能捕捉到第二次断开,第二次断开会发生错误。

    什么指定STOMP? (DISCONNECT SPEC)

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

    我的解决方案: 修改STOMP Client,直接关闭socket,不发送DISCONNECT消息(客户端会关闭socket)

    另一种解决方案: 只发送一个 DISCONNECT 消息(spring 将关闭套接字)

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

    【讨论】:

    • 2021,但问题仍未解决
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-13
    • 2017-04-16
    • 2012-05-16
    • 2013-03-16
    • 2012-04-17
    • 1970-01-01
    相关资源
    最近更新 更多