Search code examples
spring-webfluxspring-websocketstompspring-messaging

Why does STOMP functionality in spring-websocket depend on Spring MVC?


Currently, I am trying to use STOMP with websockets using webflux. In order to send a message to a STOMP topic, I need to use SimpMessagingTemplate, which is contributed by spring boot auto configuration when I add @EnableWebSocketMessageBroker

But the problem with this is, @EnableWebSocketMessageBroker indirectly expects me to have spring-mvc library in classpath

@EnableWebSocketMessageBroker @Imports DelegatingWebSocketMessageBrokerConfiguration which extends WebSocketMessageBrokerConfigurationSupport & WebSocketMessageBrokerConfigurationSupport#stompWebSocketHandlerMapping method expects the class HandlerMapping to be returned

My question is

  1. How to integrate STOMP with webflux without webmvc
  2. Why is the autoconfiguration forcing us to have mvc in classpath (and potentially conflict with webflux)

Solution

  • If you search for "stomp webflux" on Google, the very first hit (for me) is an issue in the Spring Boot issue tracker that shortly describes why it isn't supported:

    There is a general intent to provide higher-level, messaging support aligned with WebFlux, but there is no specific target release yet. Note that we are researching gRPC and RSocket support, which are in the same general category.

    Support for RSocket has been started in the 5.2 line so you may want to have a look to that.