Merge branch 'master' into 2.0.x
This commit is contained in:
@@ -121,8 +121,39 @@ spring:
|
||||
|
||||
With this metadata, and multiple service instances deployed on localhost, the random value will kick in there to make the instance unique. In Cloudfoundry the `vcap.application.instance_id` will be populated automatically in a Spring Boot application, so the random value will not be needed.
|
||||
|
||||
=== Using the DiscoveryClient
|
||||
Spring Cloud has support for https://github.com/spring-cloud/spring-cloud-netflix/blob/master/docs/src/main/asciidoc/spring-cloud-netflix.adoc#spring-cloud-feign[Feign] (a REST client builder) and also https://github.com/spring-cloud/spring-cloud-netflix/blob/master/docs/src/main/asciidoc/spring-cloud-netflix.adoc#spring-cloud-ribbon[Spring `RestTemplate`] using the logical service names instead of physical URLs.
|
||||
=== Looking up services
|
||||
|
||||
==== Using Ribbon
|
||||
|
||||
Spring Cloud has support for https://github.com/spring-cloud/spring-cloud-netflix/blob/master/docs/src/main/asciidoc/spring-cloud-netflix.adoc#spring-cloud-feign[Feign] (a REST client builder) and also https://github.com/spring-cloud/spring-cloud-netflix/blob/master/docs/src/main/asciidoc/spring-cloud-netflix.adoc#spring-cloud-ribbon[Spring `RestTemplate`]
|
||||
for looking up services using the logical service names/ids instead of physical URLs. Both Feign and the discovery-aware RestTemplate utilize http://cloud.spring.io/spring-cloud-netflix/single/spring-cloud-netflix.html#spring-cloud-ribbon[Ribbon] for client-side load balancing.
|
||||
|
||||
If you want to access service STORES using the RestTemplate simply declare:
|
||||
|
||||
----
|
||||
@LoadBalanced
|
||||
@Bean
|
||||
public RestTemplate loadbalancedRestTemplate() {
|
||||
new RestTemplate();
|
||||
}
|
||||
----
|
||||
|
||||
and use it like this (notice how we use the STORES service name/id from Consul instead of a fully qualified domainname):
|
||||
|
||||
----
|
||||
@Autowired
|
||||
RestTemplate restTemplate;
|
||||
|
||||
public String getFirstProduct() {
|
||||
return this.restTemplate.getForObject("https://STORES/products/1", String.class);
|
||||
}
|
||||
----
|
||||
|
||||
If you have Consul clusters in multiple datacenters and you want to access a service in another datacenter a service name/id alone is not enough. In that case
|
||||
you use property `spring.cloud.consul.discovery.datacenters.STORES=dc-west` where `STORES` is the service name/id and `dc-west` is the datacenter
|
||||
where the STORES service lives.
|
||||
|
||||
==== Using the DiscoveryClient
|
||||
|
||||
You can also use the `org.springframework.cloud.client.discovery.DiscoveryClient` which provides a simple API for discovery clients that is not specific to Netflix, e.g.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user