Почему Reactor.create создает потоки только одного элемента? - PullRequest
0 голосов
/ 02 апреля 2019

Я хотел создать конечную точку, которая будет передавать данные клиенту.

Все работает нормально, когда я создаю поток с помощью метода Flux.generate, но это не так, когда я использую Flux.create (

@RestController
public class StreamController {

    @GetMapping(value = "/stream-create", produces = APPLICATION_STREAM_JSON_VALUE)
    public Flux<MyObj> streamCreate() {

        Flux<MyObj> flux = Flux.create(emitter -> {
            while (true) {
                emitter.next(new MyObj("my name"));
            }
        });

        return flux.subscribeOn(Schedulers.parallel());
    }

    @GetMapping(value = "/stream-generate", produces = APPLICATION_STREAM_JSON_VALUE)
    public Flux<MyObj> streamGenerate() {

        Flux<MyObj> flux = Flux.generate(emitter -> {
            emitter.next(new MyObj("my name"));
        });

        return flux.subscribeOn(Schedulers.parallel());
    }

Когда я делаю

curl  https://localhost:8443/stream-generate

У меня есть бесконечный список

{"name":"my name"}
{"name":"my name"}
{"name":"my name"}
...

(как и ожидалось)

но

curl  https://localhost:8443/stream-create

возвращает только один

{"name":"my name"}

и больше не выводится. Есть идеи?

Я бы хотел использовать Flux.create, чтобы иметь возможность передавать больше данных одновременно.

...