Java 对spring云网关中GlobalFilter中的其他服务的请求

Java 对spring云网关中GlobalFilter中的其他服务的请求,java,spring,spring-cloud,spring-webflux,Java,Spring,Spring Cloud,Spring Webflux,我有一个微服务负责生成具有不同信息的JWT 出于某种原因,SpringGateway向jwt注入了一个自定义过滤器 问题是,过滤器无法在收到响应之前进行阻塞 因此,在请求中注入jwt之前,过滤器是链接的 有什么办法解决这个问题吗 请参阅我的过滤器: [...] @Component public class AddJwtFilter implements GlobalFilter { [...] Mono<String> response = webClient.g

我有一个微服务负责生成具有不同信息的JWT

出于某种原因,SpringGateway向jwt注入了一个自定义过滤器

问题是,过滤器无法在收到响应之前进行阻塞

因此,在请求中注入jwt之前,过滤器是链接的

有什么办法解决这个问题吗

请参阅我的过滤器:

[...]
@Component
public class AddJwtFilter implements GlobalFilter {
[...]

        Mono<String> response = webClient.get().uri("https://localhost:9001/security/generatejwt/{accessToken}", accessToken).retrieve().bodyToMono(String.class);

        response.subscribe(System.out::println);

        System.out.println("I return the chain");
        return chain.filter(exchange);
    }
}
[…]
@组成部分
公共类AddJwtFilter实现了GlobalFilter{
[...]
Mono response=webClient.get().uri(“https://localhost:9001/security/generatejwt/{accessToken},accessToken.retrieve().BodyToNo(String.class);
response.subscribe(System.out::println);
System.out.println(“我返回链”);
返回链。过滤器(交换);
}
}
println不是我想要的真正的处理方法,它只是检查响应何时完成。 请求是正确的,“println”为我提供了预期的响应


非常感谢您的回复。

如评论中所述,您需要链接所有内容

@Component
public class AddJwtFilter implements GlobalFilter {
    return webClient.get()
             .uri("https://localhost:9001/security/generatejwt/{accessToken}", 
                  accessToken)
             .retrieve()
             .bodyToMono(String.class).flatMap(response -> {
                 System.out.println(response);
                 return chain.filter(exchange);
             });
}

你需要把Mono链接起来,而不是订阅。非常感谢你们两位给出的有用答案。反应式程序设计对我们来说是新的,我们需要更多地研究单分子链和通量链的微妙之处。祝您今天过得愉快。