Spring Результат кэширования WebFlux Flux и повторное его использование ⇐ JAVA
-
Anonymous
Spring Результат кэширования WebFlux Flux и повторное его использование
У меня есть вариант использования, когда мне нужно кэшировать ответ потока и использовать его повторно
Например. здесь invokeEndpoint вызывает внешнюю конечную точку для получения ответа. Как только я получу ответ, мне нужно отправить исходный полученный ответ и агрегироватьd ответ.
В приведенном ниже коде агрегатный метод также выполняет тот же вызов конечной точки, чего я пытаюсь избежать, поскольку запрос требует больших усилий для получения ответа.
Я пробовал использовать cache и share для данных, но, похоже, это не работает, я вижу, что выполняются избыточные вызовы чего я стараюсь избегать.
private Flux getResponse(List Requests){ Данные Flux = Flux.fromIterable(requests) .flatMap(this::invokeEndpoint, 10); // .делиться(); // не повезло // .кэш(); // не повезло return Flux.concat(данные, агрегат(данные)); } частный агрегат Mono (Flux res) { return res.reduce((a, b) -> a + b); //избыточный вызов } Документация не очень помогает, есть идеи, как мы можем кэшировать и повторно использовать Flux?
У меня есть вариант использования, когда мне нужно кэшировать ответ потока и использовать его повторно
Например. здесь invokeEndpoint вызывает внешнюю конечную точку для получения ответа. Как только я получу ответ, мне нужно отправить исходный полученный ответ и агрегироватьd ответ.
В приведенном ниже коде агрегатный метод также выполняет тот же вызов конечной точки, чего я пытаюсь избежать, поскольку запрос требует больших усилий для получения ответа.
Я пробовал использовать cache и share для данных, но, похоже, это не работает, я вижу, что выполняются избыточные вызовы чего я стараюсь избегать.
private Flux getResponse(List Requests){ Данные Flux = Flux.fromIterable(requests) .flatMap(this::invokeEndpoint, 10); // .делиться(); // не повезло // .кэш(); // не повезло return Flux.concat(данные, агрегат(данные)); } частный агрегат Mono (Flux res) { return res.reduce((a, b) -> a + b); //избыточный вызов } Документация не очень помогает, есть идеи, как мы можем кэшировать и повторно использовать Flux?
Мобильная версия