如何从 http 请求创建 Flux

How to create Flux from http requests

我想从多个传入的 http 请求到 spring-mvc rest 方法或 spring-webflux 方法创建一个 Flux。
即,任何新的方法调用,其主体将被添加到 Flux 中。 请求可以来自任何客户端,不一定是 WebClient。

你可以用Flux.create方法实现

@RestController
@RequestMapping("/")
public class EchoController
{
    private final Consumer<String> requestConsumer; // consumer to send signal to the flux

    public EchoController()
    {
        List<Consumer<String>> requestConsumerHolder = new ArrayList<>(); // temporary holder

        Flux<String> stringFlux = Flux.create(fluxSink ->
            requestConsumerHolder.add(fluxSink::next)); // when consumer accepts string it calls FluxSink.next

        stringFlux
            .doOnNext(System.out::println) // print string on next
            .subscribe();

        requestConsumer = requestConsumerHolder.get(0);
    }

    @PostMapping("/echo")
    public Mono<String> echo(@RequestBody Mono<String> request)
    {
        return request.doOnNext(requestConsumer); // send string to the flux on next
    }
}