簡體   English   中英

Spring Boot 2.6 Websocket 消息順序

[英]Spring Boot 2.6 Websocket Message Order

我們使用 spring 和 websocket 引導。

@Slf4j
@Component
public class MyWebsocketConnector extends TextWebSocketHandler {
   //....

   @Override
    protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
      // do something...
    }
}

但是現在我在我們的跟蹤中發現,不同的消息由不同的線程處理。 因此,我問自己如何保證一個接一個到達的 session 的消息也一個接一個地被處理。

不幸的是,我找不到任何關於保證訂單或同步的信息。

有人知道更多嗎?

我發現的唯一內容是: https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#websocket-stomp-ordered-messages

但這是 STOMP 實現 - 我們沒有使用 STOMP:-(

即使我使用 STOMP 並將標志“setPreservePublishOrder”設置為 true,它也不能保證訂單。 我能找到的唯一可行的解決方案是將客戶端入站通道的線程數設置為 1。

@Override
public void configureClientInboundChannel(final ChannelRegistration registration) {
    ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
    executor.setCorePoolSize(1);
    executor.setMaxPoolSize(1);
    executor.initialize();

    registration.taskExecutor(executor);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM