WebSockets & Real-Time Systems with Spring · Aula

Necessidade de intermediários de mensagens externos

Compreenda as limitações dos intermediários em memória para a expansão e as vantagens das soluções externas.

Aula 1 de 412 etapas

Necessidade de intermediários de mensagens externos é uma aula grátis de WebSockets & Real-Time Systems with Spring no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de WebSockets & Real-Time Systems with Spring, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de WebSockets & Real-Time Systems with Spring inclui 4 aulas no total.

Partes desta aula ainda não foram traduzidas e aparecem em inglês.

Scaling Real-Time Apps

Welcome! Modern web applications often need to communicate in real-time. Think about chat apps, live dashboards, or online games.

As your app grows, more users will connect simultaneously. This lesson explores a key challenge: how do you keep your real-time system fast and reliable when handling thousands or millions of users?

Understanding In-Memory Brokers

When you first set up a Spring WebSocket application, you typically use an in-memory message broker (like Spring's SimpleBrokerMessageHandler).

An in-memory broker lives directly within your application's process. It handles message routing and subscriptions for all clients connected to that specific application instance.

Single Server Operation

On a single server, an in-memory broker works perfectly. All WebSocket clients connect to the same application instance, and therefore, to the same in-memory broker.

  • Client A sends a message.
  • The in-memory broker receives it.
  • The broker routes it to Client B and Client C, which are also connected to this same server.

Everything runs smoothly in a single-instance setup!

Introducing Load Balancers

To handle more users than a single server can manage, applications are often deployed in a cluster. This means running multiple instances of your application.

A load balancer sits in front of these instances, distributing incoming client connections across them. For example, Client A might connect to Server 1, and Client B to Server 2.

The In-Memory Broker's Flaw

Here's where the problem arises: with multiple server instances, each instance has its own, separate in-memory broker.

These brokers are completely isolated. They don't know about each other, and they don't share any information.

Message Silos in Action

Imagine this scenario:

  • Client A connects to Server 1.
  • Client B connects to Server 2.
  • Client A sends a message to a public chat topic.

Only the in-memory broker on Server 1 receives this message. It will correctly deliver it to any other clients connected to Server 1, but Client B on Server 2 will never receive it!

Why We Need to Share State

For a truly scalable real-time application, messages must be delivered to all relevant clients, regardless of which server instance they are connected to.

The in-memory broker prevents this by creating isolated 'silos' of messages. We need a way for all server instances to communicate and share messages.

Introducing External Message Brokers

This is where external message brokers come in. These are standalone services (like RabbitMQ, Apache Kafka, or Redis Pub/Sub) that operate independently of your application instances.

Instead of each server having its own broker, all your server instances connect to a single, centralized external broker.

How External Brokers Solve Scaling

With an external broker:

  • A client sends a message to its connected server instance.
  • That server instance immediately forwards the message to the external broker.
  • The external broker then distributes the message to all other connected server instances.
  • Each server instance then delivers the message to its own connected clients.

This ensures all clients receive messages, regardless of which server they are connected to.

Key Advantages of External Brokers

Using an external message broker offers significant benefits for scalable real-time applications:

  • Horizontal Scalability: Easily add or remove server instances without affecting message delivery.
  • Reliability: Many external brokers offer message persistence, ensuring messages aren't lost even if a server instance goes down.
  • Decoupling: Your WebSocket server instances become stateless, making them easier to manage and scale independently.

Quick Check: Broker Limitations

You're building a chat application and expect to have thousands of users. You've deployed multiple instances of your Spring WebSocket server behind a load balancer. What is a key limitation of using Spring's default in-memory simple broker in this scaled environment?

Recap: The Need for External Brokers

In this lesson, we explored the crucial need for external message brokers when scaling Spring WebSocket applications.

  • In-memory brokers work well for single instances but fail in distributed environments.
  • Load balancers distribute connections, but in-memory brokers create message silos.
  • External brokers (like RabbitMQ, Kafka) provide a centralized hub for message exchange, enabling true horizontal scalability and reliability for your real-time systems.

Next, we'll dive into integrating these external solutions!

Grátis para começar

Aprenda WebSockets & Real-Time Systems with Spring com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
12
Aulas
48

Perguntas Frequentes

A aula “Necessidade de intermediários de mensagens externos” é grátis?

Sim — o texto completo de “Necessidade de intermediários de mensagens externos” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de WebSockets & Real-Time Systems with Spring, atualize para CoddyKit PRO. O curso de WebSockets & Real-Time Systems with Spring inclui 4 aulas no total.

O que vou aprender em “Necessidade de intermediários de mensagens externos”?

Compreenda as limitações dos intermediários em memória para a expansão e as vantagens das soluções externas. Você pratica WebSockets & Real-Time Systems with Spring com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar WebSockets & Real-Time Systems with Spring?

Nenhuma experiência prévia é necessária. WebSockets & Real-Time Systems with Spring no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Necessidade de intermediários de mensagens externos”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de WebSockets & Real-Time Systems with Spring?

Sim. Cada aula de WebSockets & Real-Time Systems with Spring inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Necessidade de intermediários de mensagens externos
  2. Integração com RabbitMQ/Kafka
  3. Arquiteturas WebSocket distribuídas
  4. Configuração do retransmissor do intermediário STOMP
← Voltar para WebSockets & Real-Time Systems with Spring