上一章节,讲解了SpringCloud如何通过RestTemplate+Ribbon去负载均衡消费服务,本章主要讲述如何通过Feign去消费服务。一、Feign 简介:Feign是一个便利的rest框架,在Ribbon的基础上进行了一次改进,采用接口的方式,将需要调用的其他服务的方法定义成抽象方法,不需要自己构建http请求,简化了调用。但是最后的原理还是通过ribbon在注册服务器中找到服务实例            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-07-02 12:31:25
                            
                                614阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            但是其实我们可以把FeifnClient抽取为独立的模块,将功能模块独立化的好处就是我们的解耦化更高,当然这个必须要考虑到整体项目环境的合理性。            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-07-17 00:07:59
                            
                                68阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            Seata业务数据库准备这里会创建3个服务,一个订单服务,一个库存服务,一个账户服务。当用户下单时,会在订单服务中创建一个订单,然后通过RPC调用库存服务来扣减下单商品的库存,再通过远程调用账户服务来扣减用户账户里面的余额,最后在订单服务中修改订单状态为已完成。该操作跨越3个数据库,有两次远程调用,很明显会有分布式事务问题。创建业务数据库:seata_order:存储订单的数据库;seata_st            
                
         
            
            
            
            Feign是一个声明式的http客户端,官方地址https其作用就是帮助我们优雅的实现http请求的发送,解决上面提到的问            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-07-23 00:18:51
                            
                                10000+阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            Ribbon配置
在Feign中配置Ribbon非常简单,直接在application.properties中配置即可,如:
# 设置连接超时时间
ribbon.ConnectTimeout=500
# 设置读取超时时间
ribbon.ReadTimeout=5000
# 对所有操作请求都进行重试
ribbon.OkToRetryOnAllOperations=true
# 切换实例的重试次数            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2017-09-14 11:41:00
                            
                                130阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            ### SpringCloud feign 默认开启支持ribbon负载均衡 ribbon: ##建立连接时需要的时间5秒, 适用于网络状态正常情况下,两端连接所用的时间 ReadTimeout: 5000 ##建立连接后从服务器读取到可用资源所用的时间,默认1秒,这里配置5秒 ConnectTim            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-03-07 12:03:30
                            
                                691阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            https://www.zhihu.com/question/283320826?utm_id=0            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-09-30 16:00:12
                            
                                162阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            1. 启动类 @SpringBootApplication @EnableAlive @EnableFeignClients(basePackages = "com.lingoace.pub.operations.clients") public class Application { public ...            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2021-09-28 10:28:00
                            
                                211阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
                     当我们通过RestTemplate调用其它服务的API时,所需要的参数须在请求的URL中进行拼接,如果参数少的话或许我们还可以忍受,一旦有多个参数的话,这时拼接请求字符串就会效率低下,并且显得好傻。
那么有没有更好的解决方案呢?答案是确定的有,Netflix已经为我们提供了一个框架:Feign。
Feign是一个声明式的Web Service客户端,它的目的就是让Web Serv            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2021-08-17 22:24:27
                            
                                511阅读
                            
                                                                             
                 
                
                             
         
            
            
            
             SpringCloud Config服务端1、导入依赖<dependency>    <groupId>org.springframework.cloud</groupId>    <artifactId>spring-cloud-starter-config</artifactId></dependency> 2、            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2019-01-29 20:52:00
                            
                                114阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            1、下载安装nacos 下载地址:https://github.com/alibaba/nacos/releases/tag/1.4.1 下载之后解压,到bin目录下运行 startup.cmd 命令浏览器输入 localhost:8848/nacos进入Nacos的控制面板一、服务注册中心【生产者】1、导入pom坐标 在父pom中导入一下坐标<dependency>
                    
                
         
            
            
            
            目的配置客户端,使其能够得到使得其可以从配置服务器上获取版本信息。改造视图微服务-feign直接将前面的一个视图微服务进行改造。pom.xml添加            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2021-12-29 15:57:01
                            
                                48阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            目的配置客户端,使其能够得到使得其可以从配置服务器上获取版本信息。改造视图微服务-feign直接将前面的一个视图微服务进行改造。pom.xml添加spring-cloud-starter-config 用于访问配置服务器<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-04-18 16:15:49
                            
                                88阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            1. Feign应用目标:Feign的作用;使用Feign实现consumer-demo代码中调用服务分析:导入启动器依赖;开启Feign功能;编写Feign客户端;编写一个处理器ConsumerFeignController,注入Feign客户端并使用;测试小结:Feign主要作用:自动根据参数拼接http请求地址。启动器依赖;<dependency>
            <            
                
         
            
            
            
            之前已经创建好了用户,订单,商品微服务,这三个微服务是互相隔离的,那么微服务和微服务之间如何互相调用呢,显然三个微服务都可以采用http通信,也就是restTemplate进行互相访问,但是这种方式对参数传递和使用都不是很方便,所以弃用此方式,采用feign进行服务之间的调用,可以简化调用流程,真正感觉到是在同一个项目中调用另一个类的方法的欢快感。feign的使用也很简单,只需要添加一个依赖即可,            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-11 23:36:28
                            
                                46阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            文章目录Spring Cloud-Feign 客户端1.Feign是什么?2.Feign的基本使用pom.xmlapplication.ymlUserController.javaCustomFeignClient.javaOrderController.javaOrderApp.java3.Feign自定义配置MyFeignClientConfig.javaCustomFeignClient.            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-05-14 11:55:32
                            
                                73阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            什么是Feign?Feign是Netfix开源的声明式HTTP客户端Github地址:https://github.com/openfeign/feignFe            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-09-06 09:02:01
                            
                                286阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            新手经常遇到的错误 Caused by: java.lang.IllegalStateException: Method has too many Body parameters feign多参数问题1.1GET方式错误写法 @RequestMapping(value="/test", method            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2021-07-20 11:11:30
                            
                                737阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            1.@RequestBody 必须要写在实现接口中 2.Feign 客户端调用的时候如果有参数的话,默认是发送post请求 3.服务接口中的请求参数必须要加上@RequestParam("registCode")注解            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-05-27 18:33:10
                            
                                318阅读