Может ли кто-нибудь помочь мне с ошибкой Only one connection receive subscriber allowed.
?
Я посмотрел ответ Олега Докуки, но мне это не помогло.
Я упростил код для демонстрационных целей. В моем фактическом коде я получаю объемный запрос Json, мне нужно запросить две разные таблицы с двумя разными параметрами из тела запроса, вызвать другую службу, используя оба результата, и отправить результат в ответ.
Функция маршрутизатора
@Bean
public RouterFunction<ServerResponse> myRoute(MyRequestHandler myRequestHandler) {
return route(RequestPredicates.POST("/api/something"), myRequestHandler::myHandlerFunction);
}
Функция обработчика
public Mono<ServerResponse> myHandlerFunction(ServerRequest serverRequest) {
Mono<Integer> just = Mono.just(22);
//For simplification I've added String body here. In actual code I have proper json body
Mono<String> stringMono = serverRequest.bodyToMono(String.class);
Mono<String> mono = stringMono.zipWith(stringMono).map(t -> t.getT2() + t.getT1());
return ok().body(mono, String.class);
}
Код работает нормально, если я заменю stringMono
на just
в обоих местах в
Mono<String> mono = stringMono.zipWith(stringMono).map(t -> t.getT2() + t.getT1());
Почему это работает с Mono<String> mono = just.zipWith(just).map(t -> t.getT2() + t.getT1());
Заранее спасибо.