binarywang / weixin-java-pay-demo

基于Spring Boot 和 WxJava 实现的微信支付Java后端Demo
902 stars 467 forks source link

微信支付默认的httpclient没法复用,每次都会创建一个新的链接, 导致耗时很长,怎么复用一个httpclient呢? #113

Open shuzhishangdecainiao opened 1 year ago

shuzhishangdecainiao commented 1 year ago

问题(提问前,请确保阅读过项目首页说明以及SDK wiki文档相关内容)

微信支付默认的httpclient没法复用,每次都会创建一个新的链接, 导致耗时很长,怎么复用一个httpclient呢?

简要描述

WxPayServiceApacheHttpImpl中每次post都会调用createHttpClientBuilder创建一个新的client,无法复用client,导致每次支付请求发起时都是创建的新连接。而创建链接时握手的过程及其消耗CPU,导致CPU在极端情况下存在被打满的情况。 目前没有还没有给使用WxPayServiceJoddHttpImpl,不知道该实现是否也存在HttpClient无法复用的问题。 另外,为什么fastXml默认没有开启?是存在什么问题吗?希望能够一并解答。

版本情况

期待结果

如何复用httpClient,不用每次支付都创建一个新的链接。 fastXml默认没有开启?是存在什么问题吗?

实际情况

重现步骤

日志

renanmin commented 1 year ago

这是来自QQ邮箱的疫情自动回复邮件。   您好,我最近正在疫情中,无法亲自回复您的邮件。我将在疫情结束后,尽快给您回复。

binarywang commented 1 year ago

cn.jojo.pc.binarywang wx-java 3.7.22_dubbo_3

这个肯定不是我发布的版本吧?

shuzhishangdecainiao commented 1 year ago

cn.jojo.pc.binarywang wx-java 3.7.22_dubbo_3

这个肯定不是我发布的版本吧? 不是,这是前同事留下的,具体的版本不清楚,应该是3.7.22?我目前通过继承重写了cn.tinman.sharedservices.mall.pay.facade.service.wechat.impl.JOJOWxPayServiceImpl#post方法,复用了同一个httpclient,看到创建链接的cpu耗时降低的很明显,但是重写感觉会有坑,目前有直接复用一个httpclient的方式吗?

shuzhishangdecainiao commented 1 year ago

cn.jojo.pc.binarywang wx-java 3.7.22_dubbo_3

这个肯定不是我发布的版本吧?

确认了,版本号是3.7.0