服務之間遠端呼叫
阿新 • • 發佈:2018-12-11
SpringCloud中服務之間RPC呼叫主要有RestTemplate+Ribbon和Feign客戶端呼叫
RestTemplate+Ribbon所需的依賴
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
使用RestTemplate呼叫需在啟動類加註解載入
@LoadBalanced
@Bean
RestTemplate restTemplate() {
return new RestTemplate();
}
在業務層中呼叫方式
@Service public class OrderService { @Autowired private RestTemplate restTemplate; public String call() { return this.restTemplate.getForObject("http://service-user/api/user/home", String.class); } }
這裡getForObject第一個引數呼叫服務介面url地址,即 應用服務名 + 介面api相對地址,第二個引數為返回結果型別
使用Feign客戶端呼叫其他服務需引入Feign依賴:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
啟動類加 @EnableFeignClients
@FeignClient(value="service-user")
public interface UserFeign {
@RequestMapping(value="/api/user/home")
String home();
}
@FeignClient的value是在application.yml中定義的其他服務的服務名 Controller接入層中使用Feign呼叫
@Autowired
UserFeign userFeign;
@RequestMapping(value="/user_home")
@ResponseBody
public String userHome() {
return userFeign.home();
}