Subscriptions filtern und skalieren
Gehen Sie über einfache Subscriptions hinaus: Liefern Sie dank serverseitiger Filterung nur die Ereignisse, die für den jeweiligen Client relevant sind, und skalieren Sie Subscriptions über mehrere Spring-Boot-Instanzen hinweg.
Subscriptions filtern und skalieren ist eine kostenlose GraphQL APIs with Spring Boot-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des GraphQL APIs with Spring Boot-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der GraphQL APIs with Spring Boot-Kurs umfasst insgesamt 4 Lektionen.
Teile dieser Lektion wurden noch nicht übersetzt und werden auf Englisch angezeigt.
Not Every Client Wants Everything
A naive subscription pushes every event to every subscriber. But a user watching order #42 does not care about order #99.
Filtering ensures each subscriber only receives the events relevant to them.
Subscription Arguments
Subscriptions can take arguments just like queries. A client passes the ID it cares about, and the server uses it to filter the stream.
type Subscription {
orderUpdated(orderId: ID!): Order
}Reactive Streams Recap
Spring for GraphQL represents a subscription as a Reactor Flux, an asynchronous stream of items. Filtering is just stream operations applied to that Flux.
Filtering with filter()
Apply .filter() to the publisher so only matching events flow to the subscriber.
@SubscriptionMapping
public Flux<Order> orderUpdated(@Argument String orderId) {
return orderPublisher.flux()
.filter(o -> o.getId().equals(orderId));
}A Shared Event Sink
Use a Reactor Sinks.Many as a hub. Your service emits events into it, and every subscription builds a filtered view of its stream.
private final Sinks.Many<Order> sink =
Sinks.many().multicast().onBackpressureBuffer();Emitting Events
When your business logic changes an order, push it into the sink so all matching subscribers are notified.
public void updateOrder(Order order) {
repository.save(order);
sink.tryEmitNext(order);
}The Scaling Problem
An in-memory sink only knows about events on its own JVM. With multiple Spring Boot instances behind a load balancer, an event emitted on instance A never reaches subscribers connected to instance B.
External Pub/Sub to the Rescue
Route events through an external broker like Redis Pub/Sub or Kafka. Every instance publishes to and subscribes from the broker, so all instances see all events.
Bridging Redis to a Flux
Subscribe to a Redis channel and feed incoming messages into the same Flux your GraphQL subscription exposes, unifying local and remote events.
redisTemplate.listenToChannel("orders")
.map(msg -> deserialize(msg.getMessage()))
.subscribe(sink::tryEmitNext);Backpressure and Cleanup
Slow clients can fall behind. Use a bounded buffer or drop strategy, and ensure resources are released when a client disconnects so memory does not leak.
Sinks.many().multicast().onBackpressureBuffer(1024, false);Best Practices
Keep subscriptions efficient:
- Filter on the server, never push everything
- Use an external broker to scale across instances
- Handle backpressure for slow consumers
- Clean up on disconnect to avoid leaks
Quick Check
Test your subscription scaling knowledge.
Recap
You scaled real-time subscriptions:
- Filter streams with
.filter()using subscription arguments - Use a
Sinks.Manyhub to broadcast events - Route through Redis or Kafka to scale across instances
- Manage backpressure and clean up on disconnect
Filtered, distributed subscriptions deliver the right data at scale.
Häufig gestellte Fragen
Ist die Lektion „Subscriptions filtern und skalieren“ kostenlos?
Ja — der vollständige Text von „Subscriptions filtern und skalieren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des GraphQL APIs with Spring Boot-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der GraphQL APIs with Spring Boot-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Subscriptions filtern und skalieren“?
Gehen Sie über einfache Subscriptions hinaus: Liefern Sie dank serverseitiger Filterung nur die Ereignisse, die für den jeweiligen Client relevant sind, und skalieren Sie Subscriptions über mehrere S… Du übst GraphQL APIs with Spring Boot mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um GraphQL APIs with Spring Boot zu starten?
Keine Vorkenntnisse erforderlich. GraphQL APIs with Spring Boot auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Subscriptions filtern und skalieren“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser GraphQL APIs with Spring Boot-Lektion Code schreiben und ausführen?
Ja. Jede GraphQL APIs with Spring Boot-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- GraphQL-Subscriptions verstehen
- Echtzeitaktualisierungen implementieren
- WebSockets in Spring integrieren
- Subscriptions filtern und skalieren