分布式接口的調用


1、首先在公共模塊demo-api中寫好接口

2、demo-api接口如下;

** “聲明式調用”就是定義一個公共的接口,由提供方來實現,消費方來調用
	消費方直接注入此接口,調方法
		
	用FeignClient注解綁定一個提供方的服務名,如
	@FeignClient("SIMPLE-PROVIDER"),前提是提供方已經把服務注冊到注冊中心了
	
	注意:
	1、接口里的參數前面一定要加注解
		如“@RequestParam("id") String id、@RequestBody SimpleUser user”
	2、接口要符合Restful風格的規范

  

3、在provider中進行接口的實現,前提是provider模塊已經作為一個服務發布了。

 

** 服務提供方
	實現服務api接口,提供服務,盡量簡潔,推薦一個類搞定
	
微服務分三層
原子層,服務的最底層,是服務的最小單元,往往直接操作數據庫
聚合層,把原子層的接口組織起來進行分類
應用層,調用聚合層,處理業務邏輯

本服務屬於原子層

  

4、對於接口的調用,消費者可以采用兩種方式

一、采用feign聲明式調用

二、采用restTemplate直接調用(有多種方式)

@RestController
public class DemoConsumerController {
	
	@Autowired //注入聲明式調用的接口(feign)
	private DemoApi api;
	
	@Autowired //注入客戶端負載均衡調用的bean(ribbon)
	private RestTemplate t;
	/**
	 * feign聲明式調用
	 * @param name
	 * @return
	 */
	@RequestMapping(value="/demo/hello")
	public String hello(String name) {
		return api.hello("hello world !");
	}
	/**
	 * ribbon負載均衡調用
	 * @param name
	 * @return
	 */
	@RequestMapping(value="/demo/hello2")
	public String hello2(String name) {
		String result = t.getForEntity("http://DEMO-PROVIDER/demo/hello?name=test", String.class).getBody();
		return result;
	}
	
}
 
        
服務分三層
原子層,服務的最底層,是服務的最小單元,往往直接操作數據庫
聚合層,把原子層的接口組織起來進行分類
應用層,調用聚合層,處理業務邏輯

本服務屬於聚合層 + 應用層

feign方式,接口注入方式()
ribbon,客戶端負載均衡方式()
 
        

5、restTemplate 對象需要在啟動類之前創建后,才可以在接口中注入,或者采用java配置類的方式

 restTemplate  采用java配置類創建

RestTemplate調用服務的另外一種方法

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM