繁体   English   中英

如何从http请求创建流量

[英]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
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM