#spring-webflux #project-reactor #concatmap
#spring-webflux #проект-реактор #concatmap
Вопрос:
У меня есть поток объектов тестового примера, для каждого объекта мне нужно вызвать внешнюю службу, как только получен ответ службы, в следующей операции он проверяет, является ли ответ действительным или нет. Но случайным образом для нескольких объектов, прежде чем будет получен ответ от внешней службы, Flux отправляет сигнал.
Flux.fromIterable(masterTestCasesList).concatMap(tc -> iSandBoxRuleEngineClient.getRoutePlanResponseForTestCase(tc))
.map(respObj -> {//checks if the response is matched.
return resu<}).collectList();
Ожидаемый результат :
1) Идентификатор ссылки: 10002 TestCase: TESTCASE_1.
2) Перед вызовом службы для идентификатора ссылки: 10002 TestCase: TESTCASE_1.
3) После попадания: соответственно сгенерировано; Идентификатор ссылки: 10002 TestCase: TESTCASE_1.
4) Идентификатор ссылки: 10002 TestCase: TESTCASE_1 соответствует true .
1) Идентификатор ссылки: 10002 TestCase: TESTCASE_2. 2) Перед вызовом службы для идентификатора ссылки: 10002 TestCase: TESTCASE_2. 3) После попадания: соответственно сгенерировано; Идентификатор ссылки: 10002 TestCase: TESTCASE_2. 4) Идентификатор ссылки: 10002 TestCase: TESTCASE_2 соответствует true .
1) Идентификатор ссылки: 10002 TestCase: TESTCASE_3. 2) Перед вызовом службы для идентификатора ссылки: 10002 TestCase: TESTCASE_3. 3) После попадания: соответственно сгенерировано; Идентификатор ссылки: 10002 TestCase: TESTCASE_3. 4) Идентификатор ссылки: 10002 TestCase: TESTCASE_3 соответствует true .
Сгенерированный вывод:
1) Идентификатор ссылки: 10002 TestCase: TESTCASE_1. 2) Перед вызовом службы для идентификатора ссылки: 10002 TestCase: TESTCASE_1. 3) После попадания: соответственно сгенерировано; Идентификатор ссылки: 10002 TestCase: TESTCASE_1. 4) Идентификатор ссылки: 10002 TestCase: TESTCASE_1 соответствует true .
1) Идентификатор ссылки: 10002 TestCase: TESTCASE_2. 2) Перед вызовом службы для идентификатора ссылки: 10002 TestCase: TESTCASE_2.
1) Идентификатор ссылки: 10002 TestCase: TESTCASE_3. 2) Перед вызовом службы для идентификатора ссылки: 10002 TestCase: TESTCASE_3. 3) После попадания: соответственно сгенерировано; Идентификатор ссылки: 10002 TestCase: TESTCASE_3. 4) Идентификатор ссылки: 10002 TestCase: TESTCASE_3 соответствует true .
Комментарии:
1. Перед тем, как будут получены все внешние ответы, выдается сигнал onComplete, который заставляет collectList() создавать mono списка. если имеется 6 тестовых примеров, тогда collectList показывает 4 (случайное число) вместо 6.