Spring Boot WebFlux 中每个 Sinks.Many 的最大订阅者数

Maximum Subscribers per Sinks.Many in Spring Boot WebFlux

我有一个简单的 spring 引导 WebFlux 应用程序,它将一些服务器发送的事件流式传输到客户端。代码如下:

Sinks.Many<String> sink = Sinks.many().multicast().onBackpressureBuffer();

@GetMapping(value = "/stream/{id}", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<ServerSentEvent<String>> getStream(@PathVariable String id) {
    return sink.asFlux().map(e -> ServerSentEvent.builder(e).build());
}

我发现当订阅者数量超过 50 时,Sinks 开始自动取消连接的订阅者以保持最大数量为 50。我不知道如何增加这个限制。这是 WebFlux 中的设置,反应式还是 spring 引导?

谢谢。

想通了。我为 spring 引导配置了一个 ThreadPoolTask​​Executor。我设置 threadPoolTaskExecutor.setQueueCapacity(50)。这个值似乎限制了 sinks.many 的最大订阅者数量。 setQueueCapacity 的默认值为 Integer.MAX_VALUE。我想我会把它保留为默认值。