From ddbc25c47a949990ae44c2b59d1190ed6f621e00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E5=8D=8E?= Date: Mon, 13 Sep 2021 11:29:44 +0800 Subject: [PATCH] 1.custom define WebClient.Builder; 2. support gateway group check by application name --- .../src/main/java/we/config/WebClientConfig.java | 7 +------ .../main/java/we/config/ProxyWebClientConfig.java | 13 +++++++++---- .../java/we/plugin/auth/GatewayGroupService.java | 9 +++++++-- 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/fizz-common/src/main/java/we/config/WebClientConfig.java b/fizz-common/src/main/java/we/config/WebClientConfig.java index a57df26..9404819 100644 --- a/fizz-common/src/main/java/we/config/WebClientConfig.java +++ b/fizz-common/src/main/java/we/config/WebClientConfig.java @@ -31,9 +31,7 @@ import org.springframework.web.reactive.function.client.WebClient; import reactor.netty.http.client.HttpClient; import reactor.netty.tcp.TcpClient; -import javax.annotation.Resource; import javax.net.ssl.SSLException; -import java.time.Duration; import java.util.concurrent.TimeUnit; /** @@ -127,10 +125,7 @@ public abstract class WebClientConfig { // @Resource // ReactorClientHttpConnector reactorClientHttpConnector; - @Resource - WebClient.Builder webClientBuilder; - - public WebClient webClient() { + public WebClient webClient(WebClient.Builder webClientBuilder) { HttpClient httpClient = HttpClient.create() .tcpConfiguration( diff --git a/fizz-core/src/main/java/we/config/ProxyWebClientConfig.java b/fizz-core/src/main/java/we/config/ProxyWebClientConfig.java index 2e244cd..e3c1b47 100644 --- a/fizz-core/src/main/java/we/config/ProxyWebClientConfig.java +++ b/fizz-core/src/main/java/we/config/ProxyWebClientConfig.java @@ -17,12 +17,11 @@ package we.config; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.reactive.function.client.WebClient; -import reactor.netty.resources.LoopResources; -import we.util.JacksonUtils; /** * @author hongqiaowei @@ -35,10 +34,16 @@ public class ProxyWebClientConfig extends WebClientConfig { protected static final String prefix = "proxy-webclient"; public static final String proxyWebClient = "proxyWebClient"; + public static final String proxyWebClientBuilder = "proxyWebClientBuilder"; + + @Bean(proxyWebClientBuilder) + public WebClient.Builder webClientBuilder() { + return WebClient.builder(); + } @Bean(proxyWebClient) - public WebClient webClient() { + public WebClient webClient(@Qualifier("proxyWebClientBuilder") WebClient.Builder builder) { log.info(proxyWebClient + ": " + this); - return super.webClient(); + return super.webClient(builder); } } diff --git a/fizz-core/src/main/java/we/plugin/auth/GatewayGroupService.java b/fizz-core/src/main/java/we/plugin/auth/GatewayGroupService.java index 6ca1e54..c472d52 100644 --- a/fizz-core/src/main/java/we/plugin/auth/GatewayGroupService.java +++ b/fizz-core/src/main/java/we/plugin/auth/GatewayGroupService.java @@ -19,12 +19,13 @@ package we.plugin.auth; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.core.env.Environment; import org.springframework.data.redis.core.ReactiveStringRedisTemplate; import org.springframework.stereotype.Service; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; -import we.flume.clients.log4j2appender.LogService; import we.config.AggregateRedisConfig; +import we.flume.clients.log4j2appender.LogService; import we.util.Constants; import we.util.JacksonUtils; import we.util.NetworkUtils; @@ -60,6 +61,9 @@ public class GatewayGroupService { @Resource(name = AggregateRedisConfig.AGGREGATE_REACTIVE_REDIS_TEMPLATE) private ReactiveStringRedisTemplate rt; + @Resource + private Environment environment; + @PostConstruct public void init() throws Throwable { this.init(this::lsnGatewayGroupChange); @@ -181,10 +185,11 @@ public class GatewayGroupService { private void updateCurrentGatewayGroupSet(Set currentGatewayGroupSet, Map gatewayGroupMap) { String ip = NetworkUtils.getServerIp(); + String applicationName = environment.getProperty("spring.application.name"); currentGatewayGroupSet.clear(); gatewayGroupMap.forEach( (k, gg) -> { - if (gg.gateways.contains(ip)) { + if (gg.gateways.contains(ip) || gg.gateways.contains(applicationName)) { currentGatewayGroupSet.add(gg.group); } }