0Pricing
WebSockets & Real-Time Systems with Spring · Leçon

Configuration de STOMP avec Spring

Configurez le courtier STOMP de Spring et ses mécanismes de gestion des messages pour assurer une communication efficace.

Configuration de STOMP avec Spring est une leçon WebSockets & Real-Time Systems with Spring gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage WebSockets & Real-Time Systems with Spring, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours WebSockets & Real-Time Systems with Spring comprend 4 leçons au total.

Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.

Spring & STOMP Configuration

Spring Boot makes building real-time applications with WebSockets and STOMP much easier. It provides powerful abstractions and auto-configuration to get you started quickly.

In this lesson, we'll learn how to set up Spring to handle STOMP messages. This involves configuring message brokers, defining endpoints, and establishing communication paths.

Activating STOMP with Spring

The first step is to enable Spring's WebSocket message broker capabilities. This is done with a single annotation: @EnableWebSocketMessageBroker.

  • This annotation configures a message broker behind the scenes.
  • It also sets up a Spring application context for handling STOMP messages.
  • You'll typically place this on a configuration class.

Customizing Your STOMP Setup

To customize how Spring handles WebSocket and STOMP messages, you'll implement the WebSocketMessageBrokerConfigurer interface.

This interface provides methods that allow you to:

  • Configure the message broker.
  • Register STOMP endpoints.
  • Add interceptors and customize message converters.

Setting Up the Message Broker

The message broker routes messages to their intended recipients. Spring provides a "simple" in-memory broker for basic needs.

You configure it in the configureMessageBroker method:

  • enableSimpleBroker(): Activates the in-memory broker.
  • Paths like /topic are for public, publish-subscribe messages.
  • Paths like /queue are for private, point-to-point messages.

Simple Broker Example

Here's how to set up the basic in-memory message broker with /topic and /queue destinations. This will allow clients to subscribe to public topics and send private messages.

package com.coddykit;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;

@SpringBootApplication
public class MainApplication {
    public static void main(String[] args) {
        SpringApplication.run(MainApplication.class, args);
    }
}

@Configuration
@EnableWebSocketMessageBroker
class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        config.enableSimpleBroker("/topic", "/queue");
    }
    // Endpoints will be added later
}

Client-to-Server Paths

When a client sends a message to the server, it usually targets a specific server-side handler. We define a prefix for these messages using setApplicationDestinationPrefixes().

  • For example, if the prefix is /app, clients send messages to paths like /app/chat.sendMessage.
  • These messages are then routed to methods annotated with @MessageMapping on the server.

App Destination Prefix Example

Let's update our configuration to include an application destination prefix. This tells Spring which messages are intended for server-side methods.

package com.coddykit;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;

@SpringBootApplication
public class MainApplication {
    public static void main(String[] args) {
        SpringApplication.run(MainApplication.class, args);
    }
}

@Configuration
@EnableWebSocketMessageBroker
class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        config.enableSimpleBroker("/topic", "/queue");
        // Messages from clients for the server will start with /app
        config.setApplicationDestinationPrefixes("/app");
    }
    // Endpoints will be added later
}

Defining WebSocket Connection Point

Clients need a specific HTTP endpoint to initiate the WebSocket handshake. This is where they first connect before STOMP messaging begins.

You define this endpoint using registerStompEndpoints():

  • addEndpoint("/ws"): Makes the endpoint available at http://localhost:8080/ws.
  • withSockJS(): Enables SockJS fallback options for browsers that don't fully support WebSockets.

Complete STOMP Configuration

Here's the complete configuration class, combining the message broker setup, application destination prefix, and the STOMP endpoint registration. This is the foundation for your Spring STOMP application.

package com.coddykit;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;

@SpringBootApplication
public class MainApplication {
    public static void main(String[] args) {
        SpringApplication.run(MainApplication.class, args);
    }
}

@Configuration
@EnableWebSocketMessageBroker
class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        // Messages for client subscriptions (server to client)
        config.enableSimpleBroker("/topic", "/queue");
        // Messages from clients to server-side handlers
        config.setApplicationDestinationPrefixes("/app");
    }

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        // The HTTP endpoint for WebSocket handshake
        registry.addEndpoint("/ws").withSockJS();
    }
}

Configuration Check

You've learned about different prefixes in Spring STOMP configuration. It's crucial to understand their roles.

Summary of Configuration

You've successfully learned how to configure Spring for STOMP messaging! Here's a quick recap:

  • @EnableWebSocketMessageBroker: Activates WebSocket and STOMP support.
  • WebSocketMessageBrokerConfigurer: Interface for customizing the setup.
  • configureMessageBroker(): Sets up the message broker (e.g., enableSimpleBroker("/topic", "/queue")) and application destination prefixes (e.g., setApplicationDestinationPrefixes("/app")).
  • registerStompEndpoints(): Defines the WebSocket handshake URL (e.g., addEndpoint("/ws").withSockJS()).

These steps lay the foundation for building powerful real-time features with Spring and STOMP!

Questions Fréquemment Posées

La leçon « Configuration de STOMP avec Spring » est-elle gratuite ?

Oui — le texte complet de « Configuration de STOMP avec Spring » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours WebSockets & Real-Time Systems with Spring, passe à CoddyKit PRO. Le cours WebSockets & Real-Time Systems with Spring comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Configuration de STOMP avec Spring » ?

Configurez le courtier STOMP de Spring et ses mécanismes de gestion des messages pour assurer une communication efficace. Tu pratiques WebSockets & Real-Time Systems with Spring avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer WebSockets & Real-Time Systems with Spring ?

Aucune expérience préalable n'est requise. WebSockets & Real-Time Systems with Spring sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Configuration de STOMP avec Spring » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon WebSockets & Real-Time Systems with Spring ?

Oui. Chaque leçon WebSockets & Real-Time Systems with Spring inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Présentation du protocole STOMP
  2. Configuration de STOMP avec Spring
  3. Envoi et réception de messages STOMP
  4. Sécuriser les points de terminaison STOMP avec Spring Security
← Retour à WebSockets & Real-Time Systems with Spring