您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關如何使用Eureka編寫服務消費者,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
創建服務消費者,消費我們剛剛編寫的 user/hello 接口,同樣需要先創建一個 Maven 項目 eureka-client-article-service,然后添加依賴,依賴和服務提供者的一樣,這里就不貼代碼了。
創建啟動類 App,啟動代碼與前面所講也是一樣的。唯一不同的就是 application.properties 文件中的配置信息:
spring.application.name=eureka-client-article-serviceserver.port=8082
RestTemplate 是 Spring 提供的用于訪問 Rest 服務的客戶端,RestTemplate 提供了多種便捷訪問遠程 Http 服務的方法,能夠大大提高客戶端的編寫效率。我們通過配置 RestTemplate 來調用接口,代碼如下所示。
@Configurationpublic class BeanConfiguration {@Beanpublic RestTemplate getRestTemplate() {return new RestTemplate(); } }
創建接口,在接口中調用 user/hello 接口,代碼如下所示。
@RestControllerpublic class ArticleController {@Autowiredprivate RestTemplate restTemplate;@GetMapping("/article /callHello")public String callHello() {return restTemplate.getForObject("http://localhost:8081/user/hello", String.class);} }
執行 App 啟動消費者服務,訪問 /article/callHello 接口來看看有沒有返回 Hello 字符串,如果返回了就證明調用成功。訪問地址為 http://localhost:8082/article/callHello (http://localhost%EF%BC%9A8082/article/callHello)。
上面提到的方法是直接通過服務接口的地址來調用的,和我們之前的做法一樣,完全沒有用到 Eureka 帶給我們的便利。既然用了注冊中心,那么客戶端調用的時候肯定是不需要關心有多少個服務提供接口,下面我們來改造之前的調用代碼。
首先改造 RestTemplate 的配置,添加一個 @LoadBalanced 注解,這個注解會自動構造 LoadBalancerClient 接口的實現類并注冊到 Spring 容器中,代碼如下所示。
@Configurationpublic class BeanConfiguration {@Bean@LoadBalancedpublic RestTemplate getRestTemplate() {return new RestTemplate(); } }
接下來就是改造調用代碼,我們不再直接寫固定地址,而是寫成服務的名稱,這個名稱就是我們注冊到 Eureka 中的名稱,是屬性文件中的 spring.application.name,相關代碼如下所示。
@GetMapping("/article/callHello2")public String callHello2() {return restTemplate.getForObject("http://eureka-client-user-service/user/hello", String.class);}
關于如何使用Eureka編寫服務消費者就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。