Merge pull request #550 from mercyblitz/master

Dubbo Spring Cloud Update
pull/555/head
Mercy Ma 6 years ago committed by GitHub
commit adcd590b58
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -35,6 +35,7 @@ import org.springframework.cloud.alibaba.dubbo.service.DubboGenericServiceFactor
import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.client.loadbalancer.LoadBalancerInterceptor; import org.springframework.cloud.client.loadbalancer.LoadBalancerInterceptor;
import org.springframework.cloud.client.loadbalancer.RestTemplateCustomizer; import org.springframework.cloud.client.loadbalancer.RestTemplateCustomizer;
import org.springframework.cloud.client.loadbalancer.RetryLoadBalancerInterceptor;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.event.EventListener; import org.springframework.context.event.EventListener;
import org.springframework.core.env.Environment; import org.springframework.core.env.Environment;
@ -56,7 +57,7 @@ import java.util.Map;
@Configuration @Configuration
@ConditionalOnClass(name = {"org.springframework.web.client.RestTemplate"}) @ConditionalOnClass(name = {"org.springframework.web.client.RestTemplate"})
@AutoConfigureAfter(name = {"org.springframework.cloud.client.loadbalancer.LoadBalancerAutoConfiguration"}) @AutoConfigureAfter(name = {"org.springframework.cloud.client.loadbalancer.LoadBalancerAutoConfiguration"})
public class DubboLoadBalancedRestTemplateAutoConfiguration implements BeanClassLoaderAware { public class DubboLoadBalancedRestTemplateAutoConfiguration implements BeanClassLoaderAware, SmartInitializingSingleton {
private static final Class<DubboTransported> DUBBO_TRANSPORTED_CLASS = DubboTransported.class; private static final Class<DubboTransported> DUBBO_TRANSPORTED_CLASS = DubboTransported.class;
@ -65,9 +66,12 @@ public class DubboLoadBalancedRestTemplateAutoConfiguration implements BeanClass
@Autowired @Autowired
private DubboServiceMetadataRepository repository; private DubboServiceMetadataRepository repository;
@Autowired @Autowired(required = false)
private LoadBalancerInterceptor loadBalancerInterceptor; private LoadBalancerInterceptor loadBalancerInterceptor;
@Autowired(required = false)
private RetryLoadBalancerInterceptor retryLoadBalancerInterceptor;
@Autowired @Autowired
private ConfigurableListableBeanFactory beanFactory; private ConfigurableListableBeanFactory beanFactory;
@ -86,6 +90,17 @@ public class DubboLoadBalancedRestTemplateAutoConfiguration implements BeanClass
private ClassLoader classLoader; private ClassLoader classLoader;
/**
* The {@link ClientHttpRequestInterceptor} bean that may be {@link LoadBalancerInterceptor} or {@link RetryLoadBalancerInterceptor}
*/
private ClientHttpRequestInterceptor loadBalancerInterceptorBean;
@Override
public void afterSingletonsInstantiated() {
loadBalancerInterceptorBean = retryLoadBalancerInterceptor != null ?
retryLoadBalancerInterceptor :
loadBalancerInterceptor;
}
/** /**
* Adapt the {@link RestTemplate} beans that are annotated {@link LoadBalanced @LoadBalanced} and * Adapt the {@link RestTemplate} beans that are annotated {@link LoadBalanced @LoadBalanced} and
@ -140,7 +155,7 @@ public class DubboLoadBalancedRestTemplateAutoConfiguration implements BeanClass
List<ClientHttpRequestInterceptor> interceptors = new ArrayList<>(restTemplate.getInterceptors()); List<ClientHttpRequestInterceptor> interceptors = new ArrayList<>(restTemplate.getInterceptors());
int index = interceptors.indexOf(loadBalancerInterceptor); int index = loadBalancerInterceptorBean == null ? -1 : interceptors.indexOf(loadBalancerInterceptorBean);
index = index < 0 ? 0 : index; index = index < 0 ? 0 : index;
@ -157,4 +172,5 @@ public class DubboLoadBalancedRestTemplateAutoConfiguration implements BeanClass
public void setBeanClassLoader(ClassLoader classLoader) { public void setBeanClassLoader(ClassLoader classLoader) {
this.classLoader = classLoader; this.classLoader = classLoader;
} }
} }

@ -96,87 +96,57 @@
<version>${project.version}</version> <version>${project.version}</version>
</dependency> </dependency>
</dependencies> <!-- Spring Cloud Nacos Service Discovery -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- Spring Cloud Eureka Service Discovery -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<profiles> <!-- Spring Cloud Zookeeper Service Discovery -->
<dependency>
<!-- Nacos --> <groupId>org.springframework.cloud</groupId>
<profile> <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
<id>nacos</id> <version>${spring-cloud-zookeeper.version}</version>
<activation> <exclusions>
<activeByDefault>true</activeByDefault> <exclusion>
</activation>
<dependencies>
<!-- Nacos Service Discovery -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
</dependencies>
</profile>
<profile>
<id>eureka</id>
<dependencies>
<!-- Eureka Service Discovery -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
</profile>
<!-- Zookeeper -->
<profile>
<id>zookeeper</id>
<dependencies>
<!-- Zookeeper Service Discovery -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
<version>${spring-cloud-zookeeper.version}</version>
<exclusions>
<exclusion>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId> <groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId> <artifactId>zookeeper</artifactId>
<version>3.4.12</version> </exclusion>
<optional>true</optional> </exclusions>
<exclusions> </dependency>
<exclusion>
<groupId>org.slf4j</groupId> <dependency>
<artifactId>slf4j-log4j12</artifactId> <groupId>org.apache.zookeeper</groupId>
</exclusion> <artifactId>zookeeper</artifactId>
</exclusions> <version>3.4.12</version>
</dependency> <optional>true</optional>
<exclusions>
<dependency> <exclusion>
<groupId>org.apache.curator</groupId> <groupId>org.slf4j</groupId>
<artifactId>curator-framework</artifactId> <artifactId>slf4j-log4j12</artifactId>
<version>${curator.version}</version> </exclusion>
</dependency> </exclusions>
</dependencies> </dependency>
</profile>
<dependency>
<profile> <groupId>org.apache.curator</groupId>
<id>consul</id> <artifactId>curator-framework</artifactId>
<dependencies> <version>${curator.version}</version>
<!-- Spring Cloud Consul --> </dependency>
<dependency>
<groupId>org.springframework.cloud</groupId> <!-- Spring Cloud Consul Service Discovery -->
<artifactId>spring-cloud-starter-consul-discovery</artifactId> <dependency>
<version>${spring-cloud-consul.version}</version> <groupId>org.springframework.cloud</groupId>
</dependency> <artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependencies> <version>${spring-cloud-consul.version}</version>
</profile> </dependency>
</dependencies>
</profiles>
<build> <build>
<plugins> <plugins>

@ -21,17 +21,23 @@
<artifactId>spring-boot-starter-web</artifactId> <artifactId>spring-boot-starter-web</artifactId>
</dependency> </dependency>
<!-- Sample API --> <!-- Spring Cloud Open Feign -->
<dependency> <dependency>
<groupId>org.springframework.cloud</groupId> <groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dubbo-sample-api</artifactId> <artifactId>spring-cloud-starter-openfeign</artifactId>
<version>${project.version}</version>
</dependency> </dependency>
<!-- Spring Cloud Open Feign --> <!-- Spring Retry -->
<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
</dependency>
<!-- Sample API -->
<dependency> <dependency>
<groupId>org.springframework.cloud</groupId> <groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId> <artifactId>spring-cloud-dubbo-sample-api</artifactId>
<version>${project.version}</version>
</dependency> </dependency>
</dependencies> </dependencies>

Loading…
Cancel
Save