跳到主要内容

消息顺序

ChatGPT-4o-mini 中英对照 Order of Messages

来自代理的消息被发布到 clientOutboundChannel,然后从那里写入 WebSocket 会话。由于该通道由 ThreadPoolExecutor 支持,消息在不同的线程中处理,因此客户端接收到的结果序列可能与发布的确切顺序不匹配。

要启用有序发布,请按如下方式设置 setPreservePublishOrder 标志:

@Configuration
@EnableWebSocketMessageBroker
public class PublishOrderWebSocketConfiguration implements WebSocketMessageBrokerConfigurer {

@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
// ...
registry.setPreservePublishOrder(true);
}

}
java

当标志被设置时,同一客户端会话中的消息将逐个发布到 clientOutboundChannel,以确保发布顺序。请注意,这会带来一些性能开销,因此您应该仅在必要时启用它。

同样适用于来自客户端的消息,这些消息被发送到 clientInboundChannel,然后根据它们的目标前缀进行处理。由于该通道由 ThreadPoolExecutor 支持,消息在不同的线程中处理,因此处理的结果顺序可能与接收的确切顺序不匹配。

要启用有序接收,请按如下方式设置 setPreserveReceiveOrder 标志:

@Configuration
@EnableWebSocketMessageBroker
public class ReceiveOrderWebSocketConfiguration implements WebSocketMessageBrokerConfigurer {

@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.setPreserveReceiveOrder(true);
}
}
java