Режим ServletServerContainerFactoryBean Stomp недействителен - PullRequest
1 голос
/ 17 июня 2020

Максимальный размер буфера веб-контейнера веб-контейнера tomcat составляет 8 КБ, параметр Use ServletServerContainerFactoryBean можно изменить до 64 КБ. Но он не поддерживает Stomp. Я искал различные материалы, чтобы изменить лимит, но все не удалось. Пожалуйста, дайте мне несколько советов, спасибо!


@Configuration
public class MyServerContainerConfigurer{
      @Bean
      public ServletServerContainerFactoryBean createWebSocketContainer() {
            ServletServerContainerFactoryBean container = new ServletServerContainerFactoryBean();
            container.setMaxTextMessageBufferSize(64*1024);
            container.setMaxBinaryMessageBufferSize(64*1024);
            return container;
      }
}

Действует в обычном режиме, как показано в следующем примере.

@Configuration
@EnableWebSocket
public class MyWebSocketConfigurer implements WebSocketConfigurer {

    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        registry.addHandler(new TextWebSocketHandler(),"/endpoint").setAllowedOrigins("*");
    }
}

Недопустимо в режиме Stomp, Пример Stomp.

@Configuration
@EnableWebSocketMessageBroker
public class MyWebSocketMessageBrokerConfigurer implements WebSocketMessageBrokerConfigurer {


    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/portfolio").setAllowedOrigins("*");
    }


    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        config.setPathMatcher(new AntPathMatcher("."));
        config.setApplicationDestinationPrefixes("/app");
        config.enableSimpleBroker("/topic", "/queue");
    }


    @Override
    public void configureWebSocketTransport(WebSocketTransportRegistration webSocketTransportRegistration) {
        webSocketTransportRegistration
                .setMessageSizeLimit(1024 * 1024)
                .setSendBufferSizeLimit(1024 * 1024 );

    }


}

Журнал ошибок

2020-06-16 13:45:51.226 DEBUG 11628 --- [nio-8080-exec-4] s.w.s.h.LoggingWebSocketHandlerDecorator : StandardWebSocketSession[id=c11461a9-8340-e006-dda9-cf50716694dd, uri=ws://localhost:8080/portfolio] closed with CloseStatus[code=1009, reason=No async message support and buffer too small. Buffer size: [8,192], Message size: [11,020]]

Версия SpringBoot: 2.3.0

...