场景:在微服务开发中多个服务之间通过ResulFul 进行解耦 。 下面就是在实际开发中业务服务与邮件通知服务之间的交互 官网有这样的一段描述:
If you have a Spring MVC application with calls to remote services, try the reactiveWebClient
. You can return reactive types (Reactor, RxJava, or other) directly from Spring MVC controller methods. The greater the latency per call or the interdependency among calls, the more dramatic the benefits. Spring MVC controllers can call other reactive components too/*** * @desc Webclient 单例工具类 */ public class WebClientUtils { private WebClientUtils() { } private static class WebClientUtilsHolder { private static WebClient UTIL = webClientConfig(BaseEnviromentConf.singletonEnvironment().getProperty("email_url")); } public static WebClient singleWebClient() { return WebClientUtilsHolder.UTIL; } private static WebClient webClientConfig(String url) { return WebClient.create(url); } }
Post 请求:
webClient.post().uri(uriBuilder -> uriBuilder.queryParam("mailContent", // post 参数 e.getMessage()).build()).exchange().toProcessor();