SpringCloud---SpringCloud Ribbon(一)

使用RestTemplate对象,通过Eureka注册中心去调用消费已注册的微服务实例。同时使用SpringCloud Ribbon实现负载均衡

创建ServiceConsume module

        pom.xml加入web坐标,Eureka客服端坐标,Ribbon坐标

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
 </dependency>
 <dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-eureka</artifactId>
 </dependency>
 <dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-ribbon</artifactId>
 </dependency>

        application.properties配置Eureka地址和已注册的微服务实例的应用名称

server.port=8080


#此module不注册到Eureka
eureka.client.register-with-eureka=false
eureka.client.service-url.defaultZone=http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/

#自定义配置
#要消费的微服务实例的应用名称
provided_url=http://SERVICE

         配置类,将RestTemplate对象注入Spring容器,并同时添加@LoadBalanced,实现Ribbon负载均衡

@Configuration
public class RibbonConfig {
	
	@Bean
	@LoadBalanced   //Ribbon负载均衡
	public RestTemplate getRestTemplate() {
		return new RestTemplate();
	}
	
}

         编写Controller,通过RestTemplate去调用服务接口

@Controller
public class ConsumeController {
	
	@Autowired
	private RestTemplate restTemplate;    //调用Eureka中心微服务实例的专用对象
	
	@Value("${provided_url}")
	String serviceApplication;            //微服务上实例的应用名称
	
	
	
	@RequestMapping(value="/test.do/{id}/{name}",method=RequestMethod.GET)
	@ResponseBody
	public String test(@PathVariable("id") int id,@PathVariable("name") String name) {
		String resu = restTemplate.getForObject(serviceApplication + "/testcontroller.do/"+ id + "/" + name, String.class);
		return resu;
	}
}

   

先依次启动Eureka注册中心,再启动三个微服务实例,最后启动此module,多次访问module中的Controller。Ribbon默认的负载均衡算法是轮询算法。

发布了71 篇原创文章 · 获赞 31 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_39115469/article/details/104678359