激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java之Springcloud Feign組件詳解

Java之Springcloud Feign組件詳解

2021-11-12 14:23深情以改 Java教程

這篇文章主要介紹了Java之Springcloud Feign組件詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下

一、Feign是什么?

OpenFeign是Spring Cloud提供的一個聲明式的偽Hltp客戶端,它使得調用遠程服務就像調用本地服務一樣簡單,只需要創建一個接口并添加一個注解即可,Nacos很好的兼容了OpenFeign,OpenFeign默認集成了Ribbon,
所以在Nacos下使用OpenFeign默認就實現了負載均衡的效果。

二、使用步驟

Java之Springcloud Feign組件詳解

1.消費方導入依賴

???c

org.springframework.cloud
spring-cloud-starter-openfeign

???

2.服務消費方的主程序啟動類添加注解,開啟@EnableFeignClients

@SpringBootApplication
@MapperScan("com.csqf.mapper")
@Import({
        Swagger2Config.class,
        ControllerExceptionAdvice.class,
})
@EnableFeignClients
public class springcloud_share_6002 {
    public static void main(String[] args) {
        SpringApplication.run(springcloud_share_6002.class,args);
    }

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

Java之Springcloud Feign組件詳解

3.服務消費方 創建遠程調用接口

@Service
@FeignClient("user-6001")
public interface UserFeignService {

    @GetMapping("/api/user/{id}")
    public R getUserNameById(@PathVariable("id") Integer id);
}

代碼如下(示例):

4.更改代碼后測試

@RestController
@RequestMapping("/api/share")
public class ShareContoller {
    @Autowired
    private ShareServiceImpl shareService;
//    @Autowired
//    private RestTemplate restTemplate;
//    @Autowired
//    private DiscoveryClient discoveryClient;
    @Autowired
    private UserFeignService userFeignService;

    @GetMapping("/{id}")
    public R getShareById(@PathVariable("id") Integer id) {
        Share share = shareService.getShareById(id);
        R r = userFeignService.getUserNameById(share.getUserId());
        String s = r.getData().toString();
        ShareDto shareDto = new ShareDto();
        BeanUtils.copyProperties(share,shareDto);
        shareDto.setUserName(s);
        return new R(ResponseEnum.SUCCESS,shareDto);
    }
}

補充

1.重試機制

	1:如果所有的重試完成 還是失敗 要拋出  feign.RetryableException 異常																																																																																																					
	2: 重試 會產生接口的冪等性問題:																																																																																																	
			1:查詢的接口 天生是冪等的																																																					
			2: 增刪改的處理	非冪等的																																																																																																									
配置 說明
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds 斷路器的超時時間需要大于ribbon的超時時間,不然不會觸發重試。
hello-service.ribbon.ConnectTimeout 請求連接的超時時間
hello-service.ribbon.ReadTimeout 請求處理的超時時間
hello-service.ribbon.OkToRetryOnAllOperations 是否對所有操作請求都進行重試
hello-service.ribbon.MaxAutoRetriesNextServer 重試負載均衡其他的實例最大重試次數,不包括首次server

2 遠程調用的時候出現異常的處理(ControllerExceptionAdvice)

    @ExceptionHandler(RetryableException.class)
    @ResponseBody
    public R doException(RetryableException ex){
        ex.printStackTrace();
        //  System.out.println("拋出未知異常");
        return new R(ResponseEnum.FEIGN_RETRY,null);
    }											

3.Feign的傳遞參數方式注意事項

如果你傳遞的參數,比較復雜時,默認會采用POST的請求方式。

  • 傳遞單個參數時,推薦使用@PathVariable,如果傳遞的單個參數比較多,這里也可以采用@RequestParam,不要省略value屬性
  • 傳遞對象信息時,統一采用json的方式,添加@RequestBody。Client接口必須采用@RequestMapping

Java之Springcloud Feign組件詳解

Java之Springcloud Feign組件詳解

Java之Springcloud Feign組件詳解

spring cloud項目使用feign的時候都會發現一個問題,就是get方式無法解析對象參數。其實feign是支持對象傳遞的,但是得是Map形式,而且不能為空,與spring在機制上不兼容,因此無法使用。

spring cloud在2.1.x版本中提供了@SpringQueryMap注解,可以傳遞對象參數,框架自動解析。

調用方feign接口只能是 被調用方接口
public R f1(User user) 或 public R f1(@RequestBoby User user) 參數 @RequstBoby 對象
public R f1(@SpringQueryMap User user) 參數 對象

Java之Springcloud Feign組件詳解

總結

FEIGN 集成ribbon 和 resttemplate,簡化 服務之間的調用
Feign是通過內置的Ribbon進行負載均衡,并通過HTTP去訪問被調用方,所以Feign的重試,其實就是Ribbon的重試。另外,我們在實際工作中使用Feign,用到Hystrix,在這里就順便說一下Hystrix的原理。舉例說明下,假如在沒有Hystrix的情況下,用戶一個下單操作需要調用訂單、支付、物流三個服務,如果其中物流Service因為種種問題不能提供服務,即便另外兩個服務都好好的,整個下單操作也會因為物流Service而阻塞住,導致下單服務崩潰。而Hystrix為每個依賴的服務配置獨立的線程池并進行隔離,假設下單服務有90個線程,沒有Hystrix,則因為物流Service不能提供服務,不停地重試直到90個線程全卡死。而有了Hystrix,三個依賴的服務,每個30個線程,即便物流的30個全部阻塞了,也不影響另外兩個服務的線程。

到此這篇關于Java之Springcloud Feign組件詳解的文章就介紹到這了,更多相關Java之Springcloud Feign內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/weixin_56219549/article/details/119512946

延伸 · 閱讀

精彩推薦
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7482021-02-04
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
主站蜘蛛池模板: 国内久久久久 | 久久凹凸 | 91在线视频免费观看 | 精品欧美一区二区精品久久久 | 日韩黄色片免费看 | 亚洲av一级毛片特黄大片 | 欧美成在线视频 | 中文字幕免费一区 | 亚洲天堂欧美在线 | 国产一区二区三区网站 | 一级毛片手机在线观看 | 国内精品视频饥渴少妇在线播放 | 特一级毛片 | 午夜视频大全 | 欧美3p激情一区二区三区猛视频 | 国产亚洲精品久久久久久久软件 | 国产91九色视频 | 日韩色视频 | 国产免费传媒av片在线 | 男女污污视频网站 | 欧美亚洲免费 | 亚洲尻逼视频 | 久久国产一级片 | 天天透天天狠天天爱综合97 | 狠狠操夜夜爱 | 亚洲日本乱码在线观看 | 免费特黄 | 国产精品视频一区二区三区综合 | 91成人一区| 在线观看中文字幕国产 | 久久国产精品二国产精品中国洋人 | 免费放黄网站在线播放 | 久久成人视屏 | 亚洲免费网站 | 国产精品视频成人 | 98国内自拍在线视频 | 国产精品久久久久久久久久10秀 | 一区二区三区播放 | 在线看小早川怜子av | 狠狠干天天操 | 欧美视频一区二区 |