java spring cloud 版 b2b2c 社交電商-服務消費者(Feign)

社交電商平臺源碼請加企鵝求求:一零三八七七四六二六。Feign是一個聲明式的偽Http客戶端,它使得寫Http客戶端變得更簡單。使用Feign,只需要創建一個接口并注解。它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解。Feign支持可插拔的編碼器和解碼器。Feign默認集成了Ribbon,并和Eureka結合,默認實現了負載均衡的效果。

簡而言之:

Feign 采用的是基于接口的注解

Feign 整合了ribbon,具有負載均衡的能力

整合了Hystrix,具有熔斷的能力

二、創建一個feign的服務

新建一個spring-boot工程,取名為serice-feign,在它的pom文件引入Feign的起步依賴spring-cloud-starter-feign、Eureka的起步依賴spring-cloud-starter-netflix-eureka-client、Web的起步依賴spring-boot-starter-web,代碼如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.forezp</groupId><artifactId>service-feign</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>service-feign</name><description>Demo project for Spring Boot</description><parent><groupId>com.forezp</groupId><artifactId>sc-f-chapter3</artifactId><version>0.0.1-SNAPSHOT</version></parent><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency></dependencies></project>
復制代碼

在工程的配置文件application.yml文件,指定程序名為service-feign,端口號為8765,服務注冊地址為http://localhost:8761/eureka/ ,代碼如下:

eureka:client:serviceUrl:defaultZone: http://localhost:8761/eureka/
server:port: 8765
spring:application:name: service-feign
復制代碼

在程序的啟動類ServiceFeignApplication ,加上@EnableFeignClients注解開啟Feign的功能:

@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
@EnableFeignClients
public class ServiceFeignApplication {public static void main(String[] args) {SpringApplication.run( ServiceFeignApplication.class, args );}
}
復制代碼

定義一個feign接口,通過@ FeignClient(“服務名”),來指定調用哪個服務。比如在代碼中調用了service-hi服務的“/hi”接口,代碼如下:

@FeignClient(value = "service-hi")
public interface SchedualServiceHi {@RequestMapping(value = "/hi",method = RequestMethod.GET)String sayHiFromClientOne(@RequestParam(value = "name") String name);
}
復制代碼

在Web層的controller層,對外暴露一個"/hi"的API接口,通過上面定義的Feign客戶端SchedualServiceHi 來消費服務。代碼如下:

@RestController
public class HiController {//編譯器報錯,無視。 因為這個Bean是在程序啟動的時候注入的,編譯器感知不到,所以報錯。@AutowiredSchedualServiceHi schedualServiceHi;@GetMapping(value = "/hi")public String sayHi(@RequestParam String name) {return schedualServiceHi.sayHiFromClientOne( name );}
}
復制代碼

啟動程序,多次訪問http://localhost:8765/hi?name=forezp,瀏覽器交替顯示:

hi forezp,i am from port:8762hi forezp,i am from port:8763
復制代碼

轉載于:https://juejin.im/post/5cd4dae4f265da035f6ff2bb

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/387721.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/387721.shtml
英文地址,請注明出處:http://en.pswp.cn/news/387721.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Mybaits自定義SQL

最近有個同事要包裝一個可以執行sql語句的功能用的是mybatis 最開始他想到的方案是拿到數據庫連接再執行sql語句。 后來出了某些錯誤來問我&#xff0c;為了尋求比較快的解決方法于是我就試試了下下面的方法。 首先在Mapper添加 <select id"select" resultMap&qu…

Beta 沖刺 (7/7)

團隊信息 隊名&#xff1a;爸爸餓了組長博客&#xff1a;here作業博客&#xff1a;here組員情況 組員1&#xff08;組長&#xff09;&#xff1a;王彬 過去兩天完成了哪些任務 協助完成安卓端的整合完成安卓端的美化協助制作宣傳視頻 接下來的計劃 & 還剩下哪些任務 I am d…

類的轉換函數調用的優先級與是否用const修飾的關系

P415 C Primer Plus (第六版&#xff09;(待解決~~知道原理的同學請留言&#xff0c;多謝~~&#xff09; #include <iostream>using namespace std; class Cp{private:   int a;   double b;public:   Cp()   {     a 1;     b 2.2;   } operator in…

Java Web 學習與總結(一)Servlet基礎

配置環境&#xff1a;https://www.cnblogs.com/qq965921539/p/9821374.html 簡介&#xff1a; Servlet是Sun公司提供的一種實現動態網頁的解決方案&#xff0c;在制定J2EE時引入它作為實現了基于Java語言的動態技術&#xff0c;目前流行的Web框架基本都基于Servlet技術&#xf…

堪稱經典

程序員作為高智商、高收入、高壓力群體&#xff0c;經常會有各種自嘲&#xff0c;而且還天生攜帶段子手基因。不信看看下面這些段子&#xff0c;一般人哪能懂&#xff01; 1、殺一個程序員不需要用槍&#xff0c;改三次需求就可以了 2、程序員退休后決定練習書法&#xff0c;于…

【洛谷 P1659】 [國家集訓隊]拉拉隊排練(manacher)

題目鏈接 馬拉車簡單膜你 #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int MAXN 11000010; const int MOD 19930726; char b[MAXN], a[MAXN << 1]; int hw[MAXN << 1], ans 1, n, c[MAXN]; #defi…

Judy Beta 第三天

概述 前端部分對于打包的流程以及相關 package.json 的配置都已經比較熟悉了&#xff0c;目前主要負責對新實現的 feature 做測試&#xff0c;以及參考 DAP 為后端明確數據交換的格式及參數內容等。 后端部分按照更新的 wiki 實現了變量展開&#xff0c;并且根據 DAP 的協議流程…

oracle表空間不足

oracle表空間不足&#xff0c;一般有兩個原因&#xff1a;一&#xff0c;原表空間太小&#xff0c;沒有自增長&#xff1b;二&#xff0c;表空間已自增長&#xff0c;而且表空間也已足夠大&#xff0c;對于這兩種原因分別有各自的解決辦法。 【檢查原因】 1、查看表在那個表空…

python學習中遇到的問題

2019獨角獸企業重金招聘Python工程師標準>>> def contract_str():index 8db_size 8new_table_name b_str(index & (db_size-1))print new_table_name ImportError: No module named mysql.connector import mysql.connector as sql_connector Python保存時提…

Arcgis 使用ArcToolbox實現數據統計

在ArcMap中打開ArcToolbox&#xff0c; ->Data Managerment Tools ->General ->Add你需要統計的所有數據轉載于:https://www.cnblogs.com/CoffeeEddy/p/10161863.html

oracle分區索引及循環插入

表可以按range、hash、list分區&#xff0c;表分區后&#xff0c;其上的索引和普通表上的索引有所不同&#xff0c;oracle對于分區表上的索引分為2類&#xff0c;即局部索引和全局索引&#xff0c;下面分別對這2種索引的特點和局限性做個總結。 局部索引local index 1.局部索引…

classloader.getresources() 介紹

轉載自&#xff1a; https://www.cnblogs.com/bhlsheji/p/4095699.html ◆普通情況下,我們都使用相對路徑來獲取資源,這種靈活性比較大. 比方當前類為com/bbebfe/Test.class 而圖像資源比方sample.gif應該放置在com/bbebfe/sample.gif 而假設這些圖像資源放置在icons文件夾下,則…

Anti-Aliasing SSAA MSAA MLAA SRAA 簡介

http://blog.csdn.net/codeboycjy/article/details/6312758 前兩天在瀏覽游民星空的時候&#xff0c;小編居然在文章中掛了一篇技術文章&#xff0c;是關于SRAA的。對于AA的了解很少&#xff0c;正好入職之前還有幾天的空閑時間&#xff0c;所以就這個機會把AA的一些基本算法簡…

MyBatis多數據源配置(讀寫分離)

MyBatis多數據源配置(讀寫分離) 首先說明&#xff0c;本文的配置使用的最直接的方式&#xff0c;實際用起來可能會很麻煩。 實際應用中可能存在多種結合的情況&#xff0c;你可以理解本文的含義&#xff0c;不要死板的使用。 多數據源的可能情況 1.主從 通常是MySQL一主多…

UI簡單工作

UI用戶界面 需求——效果圖——風格設計——高保證效果——html 網頁的寬度屏幕的寬度-縱向滾動條的寬度 企業網站一般是1280 根據百度流量研究所 目前我們的網頁注主要是1024和1200 這樣的寬度符合大體市場 首屏高度。 首屏的概念來源于出版領域 報紙折疊后販賣&…

MySQL分庫分表總結

MySQL分庫分表總結&#xff1a; 單庫單表 &#xff1a; 單庫單表是最常見的數據庫設計&#xff0c;例如&#xff0c;有一張用戶(user)表放在數據庫db中&#xff0c;所有的用戶都可以在db庫中的user表中查到。 單庫多表 &#xff1a; 隨著用戶數量的增加&#xff0c;user表的數…

3章 RxJava操作符

本篇文章已授權微信公眾號 YYGeeker 獨家發布轉載請標明出處 CSDN學院課程地址 RxJava2從入門到精通-初級篇:edu.csdn.net/course/deta…RxJava2從入門到精通-中級篇:edu.csdn.net/course/deta…RxJava2從入門到精通-進階篇:edu.csdn.net/course/deta…RxJava2從入門到精通-源碼…

virtualbox 使用

實現文件拖拽功能 1、設備 -- 安裝增強功能 -- /bin/sh VboxLinuxaddition.run -- reboot 2、設備 -- 拖放 -- 雙向 3、虛擬機 -- 設置 -- 存儲 -- 控制器&#xff1a;SATA -- 勾選 使用主機輸入輸出&#xff08;I\O 緩存&#xff09; 4、虛擬機硬盤 -- 勾選固態驅動器 轉載于…

linux安裝mysql 5.6.33

.到MySQL官網下載mysql編譯好的二進制安裝包&#xff0c;在下載頁面Select Platform:選項選擇linux-generic&#xff0c;然后把頁面拉到底部&#xff0c;64位系統下載Linux - Generic (glibc 2.5) (x86, 64-bit)&#xff0c;下載后文件名&#xff1a;mysql-5.6.33-linux-glibc2…

Go 函數特性和網絡爬蟲示例

爬取頁面 這篇通過網絡爬蟲的示例&#xff0c;來了解 Go 語言的遞歸、多返回值、延遲函數調用、匿名函數等方面的函數特性。首先是爬蟲的基礎示例&#xff0c;下面兩個例子展示通過 net/http 包來爬取頁面的內容。 獲取一個 URL 下面的程序展示從互聯網獲取信息&#xff0c;獲…