springcloud在springboot2.0下的实现笔记-第二篇: 服务消费者(rest+ribbon)

一. 创建服务消费者项目(service-ribbon)

新建一个springboot模块,用做服务消费者
springcloud在springboot2.0下的实现笔记-第二篇: 服务消费者(rest+ribbon)_第1张图片
在service-ribbon的pom.xml加入spring cloudspringcloud在springboot2.0下的实现笔记-第二篇: 服务消费者(rest+ribbon)_第2张图片
在service-ribbon的pom.xml加入几个关键依赖
springcloud在springboot2.0下的实现笔记-第二篇: 服务消费者(rest+ribbon)_第3张图片
完整pom.xml



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.0.6.RELEASE
         
    
    com.varz
    boot-service-ribbon
    0.0.1-SNAPSHOT
    boot-service-ribbon
    Demo project for Spring Boot

    
        1.8
    

    

        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-client
        
        
            org.springframework.cloud
            spring-cloud-starter-netflix-ribbon
        

        
            com.netflix.ribbon
            ribbon-eureka
            2.2.5
        
        
            org.springframework.boot
            spring-boot-starter-web
        
    

    
        
            
                org.springframework.cloud
                spring-cloud-dependencies
                Finchley.RELEASE
                pom
                import
            
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    




在service-ribbon的启动类,加上@EnableDiscoveryClient向服务中心注册,并且向程序的ioc注入一个bean: restTemplate;并通过@LoadBalanced注解表明这个restRemplate开启负载均衡的功能。
springcloud在springboot2.0下的实现笔记-第二篇: 服务消费者(rest+ribbon)_第4张图片
在service-ribbon的application.properties添加配置

server.port= 8764
eureka.client.serviceUrl.defaultZone= http://localhost:8761/eureka/
spring.application.name= service-ribbon

二、测试

到此,先启动eureka-server;再启动两个eureka-client(启动service-hi工程,它的端口为8762;将service-hi的配置文件的端口改为8763,并启动,这时你会发现:service-hi在eureka-server注册了2个实例,这就相当于一个小的集群。),
一个项目启动多个实例的具体方法:
springcloud在springboot2.0下的实现笔记-第二篇: 服务消费者(rest+ribbon)_第5张图片
勾选上“Allow parallel run”即可
springcloud在springboot2.0下的实现笔记-第二篇: 服务消费者(rest+ribbon)_第6张图片
低版本的idea,界面可以不一样,可以看下面的这个:https://blog.csdn.net/forezp/article/details/76408139

在service-ribbon写个测试接口:
写个测试服务类:(通过之前注入ioc容器的restTemplate来消费service-hi服务的“/hi”接口,在这里我们直接用的程序名替代了具体的url地址,在ribbon中它会根据服务名来选择具体的服务实例,根据服务实例在请求的时候会用具体的url替换掉服务名,)
springcloud在springboot2.0下的实现笔记-第二篇: 服务消费者(rest+ribbon)_第7张图片
写个controller
springcloud在springboot2.0下的实现笔记-第二篇: 服务消费者(rest+ribbon)_第8张图片
启动service ribbon,

在浏览器上多次访问http://localhost:8764/hi?name=forezp,浏览器交替显示:

hi forezp,i am from port:8762
hi forezp,i am from port:8763
三、可能遇到的问题
  1. 报错:java.lang.IllegalStateException: No instances available for XXX
    可参考连接所讲的几个方向排查:Spring Cloud Ribbon 出现 No instances available

参考教程:史上最简单的SpringCloud教程 | 第二篇: 服务消费者(rest+ribbon)

你可能感兴趣的:(JAVA)