0ggmr0:
私は春のIntelliJのアイデアを開発するwebflux使用し、そして今私はこの問題は、私の方法では、私は私は私の要求を転送するよりも、反応性のMongoからIP(String)を取得する必要があるということです満たしています。
私はこのコードを書いたように、
@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();
}
私の質問私の方法は、このMongoの実行を待機していないので、このコードは、他のスレッドで実行されることで、私は、私の方法では、このIPアドレスを取得することはできません
String ip = repository.findBySymbol(symbol)
.map(xxxxx)
.subscribe(builder::append)
.toString();
ので、私は私の方法では、すぐにIP得ることができる方法はありますか?
Yauhen Balykin:
あなたの建設は非常に汚いハックです、それをしないと反応ストリーム内の任意の副作用の操作を避けるようにしてください。
だから、あなたは自分の事業者は、次のようにチェーンする必要があります。
return repository.findBySymbol(symbol)
.map(xxxxx)
.map(ip -> webClient.method(httpMethod).uri(ip))
...
flatMap(param -> forwardRequest.exchange())