¿hay una manera de esperar un resultado del método asíncrono en el código webflux

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())

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=378931&siteId=1
Recomendado
Clasificación