springcloud服务调用其它服务接口实例及ribbon均衡负载

来源:互联网 发布:北京谷歌seo 编辑:程序博客网 时间:2024/06/08 07:48

创建服务注册中心(端口:8000)并启动


创建被调用的服务A(端口8010,服务名:service-hi)并编写controller/action将相关方法暴露出来 如下:

package com.ldcn.cloudsd.controllers;import org.springframework.beans.factory.annotation.Value;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class BizController {    @Value("${server.port}")    String port;    @RequestMapping("/hi")    public String home() {        return "hi,i am from port:" +port;    }    }

服务A的一个访问controller/action地址为:localhost:8010/hi 返回一个字符串  准备被调用


创建被调用服务B(端口8011,服务名:service-hi)并编写controller/action同上

服务B的一个访问controller/action地址为:localhost:8011/hi 返回一个字符串  准备被调用


启动服务A和服务B,此时springcloud注册中心可以看service-hi服务8010和8011的2个实例



创建另一个服务ribbon(端口:8013)注册到注册中心,准备调用服务A或B的hi返回的字符串:

服务ribbon编写一个接口 如下:

package com.ldcn.cloudsd.callservice;import org.springframework.cloud.netflix.feign.FeignClient;import org.springframework.stereotype.Component;import org.springframework.web.bind.annotation.RequestMapping;@Component@FeignClient(value="SERVICE-HI")public interface CallClientService {@RequestMapping(value="/hi")public String getClientString();}

@FeignClient(value="SERVICE-HI")   value为调用的服务名 即application.properties/yml配置里spring.application.name=xxx的配置

接口方法上面@RequestMapping(value="/hi")为service-hi服务的controller/action访问地址


服务ribbon编写controller/action调用刚刚编写的接口 :

package com.ldcn.cloudsd.controllers;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import com.ldcn.cloudsd.callservice.CallClientService;@RestControllerpublic class BizController {@AutowiredCallClientService callClientService;    @RequestMapping("/call")    public String home() {        return callClientService.getClientString();    }}

启动服务ribbon,并访问服务ribbon的地址localhost:8013/call并不断刷新,浏览器依次出现如下结果:

调用8010:

调用8011:




注意

服务ribbon启动类需要添加如下注解

@EnableFeignClients

同时需引入以下jar包

<dependency>    <groupId>org.springframework.cloud</groupId>    <artifactId>spring-cloud-starter-feign</artifactId></dependency>



阅读全文
0 0
原创粉丝点击