gpt4 book ai didi

stomp - SockJS 从spring websocket 接收stomp 消息乱序

转载 作者:行者123 更新时间:2023-12-03 15:53:09 31 4
gpt4 key购买 nike

我正在尝试使用 Springframework SimpMessagingTemplate(默认 Stomp 实现)流式传输时间序列数据,以将消息广播到 SockJS 客户端订阅的主题。但是,消息是乱序接收的。服务器是单线程的,消息按时间戳升序发送。客户端以某种方式收到了乱序的消息。

我正在使用 stompjs 和 springframework 的最新版本(4.1.6 版本)。

最佳答案

找到了这个问题的根本原因。从应用程序实现的角度来看,消息以“正确”的顺序发送(即,convertAndSend() 以一个线程或至少线程安全的方式被调用”)。然而,Springframework web socket 使用 reactor-tcp 实现,它将在clientOutboundChannel 来自线程池。因此,消息可以按照到达的不同顺序写入 tcp 套接字。当我将 Web 套接字配置为对 clientOutboundChannel 限制 1 个线程时,顺序被保留。

这个问题不在 SocketJS 中,而是当前 Spring web socket 设计的一个限制。

关于stomp - SockJS 从spring websocket 接收stomp 消息乱序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29689838/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com