Я хотел создать конечную точку, которая будет передавать данные клиенту.
Все работает нормально, когда я создаю поток с помощью метода 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, чтобы иметь возможность передавать больше данных одновременно.