Abonelikleri Filtreleme ve Ölçeklendirme
Temel aboneliklerin ötesine geçin: sunucu tarafı filtrelemeyle her istemcinin ilgilendiği olayları iletin ve abonelikleri birden çok Spring Boot örneğine ölçeklendirin.
Abonelikleri Filtreleme ve Ölçeklendirme, CoddyKit'te ücretsiz bir GraphQL APIs with Spring Boot dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, GraphQL APIs with Spring Boot öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. GraphQL APIs with Spring Boot kursu toplamda 4 dersten oluşur.
Bu dersin bazı bölümleri henüz çevrilmemiş olup İngilizce olarak gösterilmektedir.
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.
Yapay zeka eğitmeniyle GraphQL APIs with Spring Boot öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 12
- Dersler
- 48
Sıkça Sorulan Sorular
“Abonelikleri Filtreleme ve Ölçeklendirme” dersi ücretsiz mi?
Evet — “Abonelikleri Filtreleme ve Ölçeklendirme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve GraphQL APIs with Spring Boot kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. GraphQL APIs with Spring Boot kursu toplamda 4 dersten oluşur.
“Abonelikleri Filtreleme ve Ölçeklendirme” dersinde ne öğreneceğim?
Temel aboneliklerin ötesine geçin: sunucu tarafı filtrelemeyle her istemcinin ilgilendiği olayları iletin ve abonelikleri birden çok Spring Boot örneğine ölçeklendirin. GraphQL APIs with Spring Boot ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
GraphQL APIs with Spring Boot öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te GraphQL APIs with Spring Boot, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Abonelikleri Filtreleme ve Ölçeklendirme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu GraphQL APIs with Spring Boot dersinde kod yazıp çalıştırabilir miyim?
Evet. Her GraphQL APIs with Spring Boot dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- GraphQL Aboneliklerini Anlamak
- Gerçek Zamanlı Güncellemeleri Uygulama
- WebSockets'i Spring ile Bütünleştirme
- Abonelikleri Filtreleme ve Ölçeklendirme