0ggmr0:
Yo uso la primavera webflux para desarrollar con IntelliJ IDEA, y ahora me encuentro con un problema es que en mi método, que necesito para obtener una dirección IP (cadena) de mongo reactiva, que voy a enviar mi solicitud.
Así que escribí este código
@Autowird
private XXRepository repository;
public Mono<Void> xxxx(ServerWebExchange exchange, String symbol) {
StringBuilder builder = new StringBuilder();
String ip = repository.findBySymbol(symbol)
.map(xxxxx)
.subscribe(builder::append)
.toString();
WebClient.RequestBodySpec forwardRequestInfo = webClient.method(httpMethod)
.uri(ip);
xxxxxxx //setting http msg
WebClient.RequestHeadersSpec<?> forwardRequest;
return forwardRequest.exchange();
}
mi pregunta es que este código se ejecutará en otro hilo, i no puede obtener esta ip en mi método, porque mi método no se espera para esta ejecución mongo
String ip = repository.findBySymbol(symbol)
.map(xxxxx)
.subscribe(builder::append)
.toString();
todo, hay una manera que puedo conseguir de inmediato ip en mi método?
Yauhen Balykin:
su construcción es un truco muy sucio, no haga eso y tratar de evitar cualquier operación de efectos secundarios en las corrientes reactivas.
Por lo tanto, sólo tiene que sus operadores de la cadena como esta:
return repository.findBySymbol(symbol)
.map(xxxxx)
.map(ip -> webClient.method(httpMethod).uri(ip))
...
flatMap(param -> forwardRequest.exchange())