Я пытаюсь обработать список чисел, например, от 1 до 10, одно за другим, используя Reactor Flux, и есть API / double , который просто удваивает входящие Integer (1 -> 2, 4 -> 8 ...), однако у этого API есть проблемы с производительностью, ответ всегда занимает 2 секунды. При использовании limitRate(1)
я ожидал, что Reactor обрабатывает запросы один за другим следующим образом:
2020-01-01 00:00:02 - 2
2020-01-01 00:00:04 - 4
2020-01-01 00:00:06 - 6
2020-01-01 00:00:08 - 8
2020-01-01 00:00:10 - 10
...
Но на самом деле Reactor запускает все запросы сразу:
2020-01-01 00:00:02 - 6
2020-01-01 00:00:02 - 10
2020-01-01 00:00:02 - 2
2020-01-01 00:00:02 - 4
2020-01-01 00:00:02 - 8
...
Вот код
Flux.range(1, 10).limitRate(1)
.flatMap(i -> webClient.get().uri("http://localhost:10001/double?integer={int}", i).exchange()
.flatMap(resp -> resp.bodyToMono(Integer.class)))
.subscribe(System.out::println);
Thread.sleep(10000);
Кажется, limitRate
работает не так, как я ожидал, что пошло не так? Есть ли способ обрабатывать запросы один за другим с помощью Reactor? Заранее спасибо.