本文主要是介绍eureka注册中心上的服务消费者访问服务提供者:通过提供者的服务名进行访问,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
@LoadBalanced注解的作用
1.开启负载均衡的功能:开启负载均衡很简单,只需要在RestTemplate的bean上再添加一个@LoadBalanced注解即可。
2.由于加了@LoadBalanced注解,使用RestTemplateCustomizer对所有标注了@LoadBalanced的RestTemplate Bean添加了一个LoadBalancerInterceptor拦截器。利用RestTempllate的拦截器,spring可以对restTemplate bean进行定制,加入loadbalance拦截器进行ip:port的替换,也就是将请求的地址中的服务逻辑名转为具体的服务地址。
3、另外当spring容器中有多个相同类型的bean的时候,可以通过@LoadBalanced来进行区分,以便在注入的时候明确表明你要注入具体的哪个bean,消除歧义。
4、@LoadBalanced就是一个修饰符,和@Qualifier一样,标注了@Qualifier("invalid")的user bean都会自动注入到Bean、List和Map中去。
在上一节中,我们无法通过
return this.restTemplate.getForObject("http://ms-eureka-provider/eureka-provider/" + id, User.class);
这条语句进行访问,现在需要在restTmepleate新生成的bean上面添加@LoadBalanced注解:
@LoadBalanced@Bean public RestTemplate restTemplate() {return new RestTemplate(); }
修改之前:
修改后:
package com.ljf.weifuwu.springcloud.eureka.consumer;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;/*** Hello world!**/
@SpringBootApplication
@EnableEurekaClient
public class ConsumerEurekaApp
{ @LoadBalanced@Bean
public RestTemplate restTemplate() {return new RestTemplate();
}public static void main( String[] args ){SpringApplication.run(ConsumerEurekaApp.class, args);System.out.println( "eureka-consumer启动起来了!!!" );}
}
访问:http://localhost:7901/consumer-eureka/2
这篇关于eureka注册中心上的服务消费者访问服务提供者:通过提供者的服务名进行访问的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!