接上文
- 重新新建一个spring-boot工程,取名为:service-ribbon; 在它的pom.xml继承了父pom文件,并引入了相关依赖
- 在工程的配置文件指定服务的注册中心地址为http://localhost:8761/eureka/,程序名称为
service-ribbon,程序端口为8764。配置文件application.yml
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
server:
port: 8764
spring:
application:
name: service-ribbon
————————————————
版权声明:本文为CSDN博主「方志朋」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/forezp/article/details/81040946
- 向服务中心注册;并且向程序的ioc注入一个bean:
restTemplate;并通过@LoadBalanced注解表明这个restRemplate开启负载均衡的功能。
@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
public class ServiceRibbonApplication {
public static void main(String[] args) {
SpringApplication.run( ServiceRibbonApplication.class, args );
}
@Bean
@LoadBalanced
RestTemplate restTemplate() {
return new RestTemplate();
}
}
————————————————
版权声明:本文为CSDN博主「方志朋」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/forezp/article/details/81040946
注释:@EnableEurekaClient与@EnableDiscoveryClient的区别是前期更适用Eureka注册中心,后者适用除了Eureka以外
- 写一个测试类HelloService,通过之前注入ioc容器的restTemplate来消费service-hi服务的“/hi”接口,在这里我们直接用的程序名替代了具体的url地址,在ribbon中它会根据服务名来选择具体的服务实例,根据服务实例在请求的时候会用具体的url替换掉服务名,代码如下:
@Service
public class HelloService {
@Autowired
RestTemplate restTemplate;
public String hiService(String name) {
return restTemplate.getForObject("http://SERVICE-HI/hi?name="+name,String.class);
}
}
————————————————
版权声明:本文为CSDN博主「方志朋」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/forezp/article/details/81040946
- 写一个controller,在controller中用调用HelloService 的方法,代码如下:
@RestController
public class HelloControler {
@Autowired
HelloService helloService;
@GetMapping(value = "/hi")
public String hi(@RequestParam String name) {
return helloService.hiService( name );
}
}
————————————————
版权声明:本文为CSDN博主「方志朋」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/forezp/article/details/81040946
- 在浏览器上访问http://localhost:8764/hi?name=forezp,会发现已经实现负载均衡
注释:开启多个实例的方法:https://blog.csdn.net/forezp/article/details/76408139