Java 如何从http请求创建流量

Java 如何从http请求创建流量,java,spring-mvc,reactive-programming,spring-webflux,project-reactor,Java,Spring Mvc,Reactive Programming,Spring Webflux,Project Reactor,我想创建一个从多个传入http请求到spring mvc rest方法或spring webflux方法的流量。 即,任何新的方法调用,其主体都将添加到通量中。 请求可以来自任何客户端,而不一定来自网络客户端。您可以使用Flux.create方法实现请求 @RestController @RequestMapping("/") public class EchoController { private final Consumer<String> requestConsume

我想创建一个从多个传入http请求到spring mvc rest方法或spring webflux方法的流量。
即,任何新的方法调用,其主体都将添加到通量中。
请求可以来自任何客户端,而不一定来自网络客户端。

您可以使用
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
    }
}
@RestController
@请求映射(“/”)
公共类回声控制器
{
private final Consumer requestConsumer;//向通量发送信号的Consumer
公共EchoController()
{
List requestConsumerHolder=new ArrayList();//临时持有者
Flux stringFlux=Flux.create(fluxSink->
requestConsumerHolder.add(fluxSink::next));//当使用者接受字符串时,它调用fluxSink.next
stringFlux
.doOnNext(System.out::println)//下一步打印字符串
.subscribe();
requestConsumer=requestConsumerHolder.get(0);
}
@后映射(“/echo”)
公共单声道回波(@RequestBody Mono-request)
{
return request.doOnNext(requestConsumer);//将字符串发送到下一个
}
}

您不能。多个请求在不同的线程上执行,您不能在一个流量中加入它们。