perf(webflux): optimize session broadcasting with Flux.fromIterable (#109)

Replace Flux.fromStream(sessions.values().stream()) with more efficient
Flux.fromIterable(sessions.values()) to eliminate unnecessary stream
conversion when broadcasting messages to active sessions

Signed-off-by: jitokim <pigberger70@gmail.com>
This commit is contained in:
jitokim 2025-04-06 02:12:34 +09:00 • committed by Christian Tzolov
commit c3a7c1ac1e

View file

@ -171,10 +171,10 @@ public class WebFluxSseServerTransportProvider implements McpServerTransportProv
logger.debug("Attempting to broadcast message to {} active sessions", sessions.size());
return Flux.fromStream(sessions.values().stream())
return Flux.fromIterable(sessions.values())
.flatMap(session -> session.sendNotification(method, params)
.doOnError(e -> logger.error("Failed to " + "send message to session " + "{}: {}", session.getId(),
e.getMessage()))
.doOnError(
e -> logger.error("Failed to send message to session {}: {}", session.getId(), e.getMessage()))
.onErrorComplete())
.then();
}