springboot整合openfeign配置微信小程序登录,并解决超时问题

编程入门 行业动态 更新时间:2024-10-24 14:19:43

springboot整合openfeign配置微信小<a href=https://www.elefans.com/category/jswz/34/1771429.html style=程序登录,并解决超时问题"/>

springboot整合openfeign配置微信小程序登录,并解决超时问题

在使用springcloud作为技术栈的时候,在rpc通信方面,有很多框架选择,例如dubbo,openfeign等。

OpenFeign是一个声明式的web服务客户端,它使得编写Web服务客户端变得非常容易。它使用基于注解的方式来定义和实现Web服务客户端。OpenFeign将Web服务API的定义与客户端的实现分离开来,从而使得Web服务API的维护变得更加简单。OpenFeign内置了对负载均衡、服务发现和断路器等功能的支持,使得在微服务架构中使用OpenFeign更加便捷。

springboot整合openfeign

maven

<properties><java.version>21</java.version><spring-cloud.version>2022.0.0</spring-cloud.version><spring-cloud-alibaba.version>2022.0.0.0</spring-cloud-alibaba.version>
</properties>
<dependencies><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><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-loadbalancer</artifactId></dependency>
</dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>

 配置类

@Configuration
public class FeignConfig {@Beanpublic Logger.Level feignLoggerLevel() {return Logger.Level.FULL;}
}

rpc类

@FeignClient(url = "", name = "wx")
public interface WxService {@GetMapping("/sns/jscode2session")String jscode2session(@RequestParam String appid, @RequestParam String secret, @RequestParam String js_code, @RequestParam String grant_type);@PostMapping("/wxa/business/getuserphonenumber")WxResponse getuserphonenumber(@RequestBody WxRequest wxRequest, @RequestParam String access_token);@GetMapping("/cgi-bin/token")TokenResponse token(@RequestParam String grant_type, @RequestParam String appid, @RequestParam String secret);
}

dto类 

public record TokenResponse(String access_token, Integer expires_in) {
}
public record WxResponse(String openid,String session_key,String unionid,int errcode,String errmsg
) {}

启动类

@SpringBootApplication
@EnableFeignClients
public class PlatformApplication {public static void main(String[] args) {SpringApplication.run(PlatformApplication.class, args);}}

测试类 

@Test
void testCode() {TokenResponse token = wxService.token("client_credential", "wxxxxxxxxx", "xxxxxxxxxx");System.out.println(token);var wxResponse = wxService.getuserphonenumber(new WxRequest("xxxxxxxxxxxxxxxxxxxxxxx"), token.access_token());System.out.println(wxResponse);
}

网络环境不好造成的超时问题

解决方案,一般遇到openfeign调用时超时有两种情况,一种是调用三方服务,一种是自己的服务,解决方案和思路也有差距

三方服务 

三方服务的特点是自己只作为调用方无法控制被调用的代码,而且也无法确定对方的网络以及代码执行情况

可以通过添加超时时间 

在配置文件中添加

feign:client:config:default:connectTimeout: 1500readTimeout: 1500

自己服务 

超时的原因可能时因为服务不稳定,可以采取重试策略

由于openfeign是默认不支持重试的,需要添加添加配置类,具体的时间需要根据实际情况填写,毕竟内网请求太久多半是服务架构不合理

@Configuration
public class FeignConfigure {@Beanpublic Retryer feignRetryer(){Retryer retryer = new Retryer.Default(100, 1000, 2);return retryer;}
}

 优化下又服务

找到超时的原因,可能是数据库查询没走索引,可能是大文件读写等问题,需要优化代码逻辑

!!!!内网不建议配置超时时间 

更多推荐

springboot整合openfeign配置微信小程序登录,并解决超时问题

本文发布于:2023-11-15 07:44:30,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1596142.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:程序   springboot   openfeign   微信小

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!