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 引导配置了一个 ThreadPoolTaskExecutor。我设置 threadPoolTaskExecutor.setQueueCapacity(50)。这个值似乎限制了 sinks.many 的最大订阅者数量。 setQueueCapacity 的默认值为 Integer.MAX_VALUE。我想我会把它保留为默认值。
我有一个简单的 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 引导配置了一个 ThreadPoolTaskExecutor。我设置 threadPoolTaskExecutor.setQueueCapacity(50)。这个值似乎限制了 sinks.many 的最大订阅者数量。 setQueueCapacity 的默认值为 Integer.MAX_VALUE。我想我会把它保留为默认值。