Skip to content

Commit d85e04a

Browse files
qw8881569Binary Wang
authored andcommitted
🎨 starter模块添加 HttpClient 超时配置
1 parent aacfa94 commit d85e04a

File tree

5 files changed

+77
-0
lines changed

5 files changed

+77
-0
lines changed

spring-boot-starters/wx-java-miniapp-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/miniapp/config/storage/AbstractWxMaConfigStorageConfiguration.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl;
44
import com.binarywang.spring.starter.wxjava.miniapp.properties.WxMaProperties;
5+
import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder;
6+
import me.chanjar.weixin.common.util.http.apache.DefaultApacheHttpClientBuilder;
57
import org.apache.commons.lang3.StringUtils;
68

79
/**
@@ -10,6 +12,7 @@
1012
public abstract class AbstractWxMaConfigStorageConfiguration {
1113

1214
protected WxMaDefaultConfigImpl config(WxMaDefaultConfigImpl config, WxMaProperties properties) {
15+
WxMaProperties.ConfigStorage storage = properties.getConfigStorage();
1316
config.setAppid(StringUtils.trimToNull(properties.getAppid()));
1417
config.setSecret(StringUtils.trimToNull(properties.getSecret()));
1518
config.setToken(StringUtils.trimToNull(properties.getToken()));
@@ -25,6 +28,19 @@ protected WxMaDefaultConfigImpl config(WxMaDefaultConfigImpl config, WxMaPropert
2528
config.setHttpProxyPort(configStorageProperties.getHttpProxyPort());
2629
}
2730

31+
// 设置自定义的HttpClient超时配置
32+
ApacheHttpClientBuilder clientBuilder = config.getApacheHttpClientBuilder();
33+
if (clientBuilder == null) {
34+
clientBuilder = DefaultApacheHttpClientBuilder.get();
35+
}
36+
if (clientBuilder instanceof DefaultApacheHttpClientBuilder) {
37+
DefaultApacheHttpClientBuilder defaultBuilder = (DefaultApacheHttpClientBuilder) clientBuilder;
38+
defaultBuilder.setConnectionTimeout(storage.getConnectionTimeout());
39+
defaultBuilder.setSoTimeout(storage.getSoTimeout());
40+
defaultBuilder.setConnectionRequestTimeout(storage.getConnectionRequestTimeout());
41+
config.setApacheHttpClientBuilder(defaultBuilder);
42+
}
43+
2844
int maxRetryTimes = configStorageProperties.getMaxRetryTimes();
2945
if (configStorageProperties.getMaxRetryTimes() < 0) {
3046
maxRetryTimes = 0;

spring-boot-starters/wx-java-miniapp-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/miniapp/properties/WxMaProperties.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,21 @@ public static class ConfigStorage {
112112
* </pre>
113113
*/
114114
private int maxRetryTimes = 5;
115+
116+
/**
117+
* 连接超时时间,单位毫秒
118+
*/
119+
private int connectionTimeout = 5000;
120+
121+
/**
122+
* 读数据超时时间,即socketTimeout,单位毫秒
123+
*/
124+
private int soTimeout = 5000;
125+
126+
/**
127+
* 从连接池获取链接的超时时间,单位毫秒
128+
*/
129+
private int connectionRequestTimeout = 5000;
115130
}
116131

117132
}

spring-boot-starters/wx-java-mp-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/mp/config/WxMpStorageAutoConfiguration.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
import me.chanjar.weixin.common.redis.JedisWxRedisOps;
1010
import me.chanjar.weixin.common.redis.RedisTemplateWxRedisOps;
1111
import me.chanjar.weixin.common.redis.WxRedisOps;
12+
import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder;
13+
import me.chanjar.weixin.common.util.http.apache.DefaultApacheHttpClientBuilder;
1214
import me.chanjar.weixin.mp.config.WxMpConfigStorage;
1315
import me.chanjar.weixin.mp.config.WxMpHostConfig;
1416
import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl;
@@ -122,6 +124,19 @@ private void setWxMpInfo(WxMpDefaultConfigImpl config) {
122124
config.setSecret(properties.getSecret());
123125
config.setToken(properties.getToken());
124126
config.setAesKey(properties.getAesKey());
127+
WxMpProperties.ConfigStorage storage = properties.getConfigStorage();
128+
// 设置自定义的HttpClient超时配置
129+
ApacheHttpClientBuilder clientBuilder = config.getApacheHttpClientBuilder();
130+
if (clientBuilder == null) {
131+
clientBuilder = DefaultApacheHttpClientBuilder.get();
132+
}
133+
if (clientBuilder instanceof DefaultApacheHttpClientBuilder) {
134+
DefaultApacheHttpClientBuilder defaultBuilder = (DefaultApacheHttpClientBuilder) clientBuilder;
135+
defaultBuilder.setConnectionTimeout(storage.getConnectionTimeout());
136+
defaultBuilder.setSoTimeout(storage.getSoTimeout());
137+
defaultBuilder.setConnectionRequestTimeout(storage.getConnectionRequestTimeout());
138+
config.setApacheHttpClientBuilder(defaultBuilder);
139+
}
125140
config.setUseStableAccessToken(wxMpProperties.isUseStableAccessToken());
126141
config.setHttpProxyHost(configStorageProperties.getHttpProxyHost());
127142
config.setHttpProxyUsername(configStorageProperties.getHttpProxyUsername());

spring-boot-starters/wx-java-mp-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/mp/properties/WxMpProperties.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,21 @@ public static class ConfigStorage implements Serializable {
102102
*/
103103
private String httpProxyPassword;
104104

105+
/**
106+
* 连接超时时间,单位毫秒
107+
*/
108+
private int connectionTimeout = 5000;
109+
110+
/**
111+
* 读数据超时时间,即socketTimeout,单位毫秒
112+
*/
113+
private int soTimeout = 1;
114+
115+
/**
116+
* 从连接池获取链接的超时时间,单位毫秒
117+
*/
118+
private int connectionRequestTimeout = 5000;
119+
105120
}
106121

107122
}

spring-boot-starters/wx-java-open-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/open/config/storage/AbstractWxOpenConfigStorageConfiguration.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.binarywang.spring.starter.wxjava.open.config.storage;
22

33
import com.binarywang.spring.starter.wxjava.open.properties.WxOpenProperties;
4+
import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder;
5+
import me.chanjar.weixin.common.util.http.apache.DefaultApacheHttpClientBuilder;
46
import me.chanjar.weixin.open.api.impl.WxOpenInMemoryConfigStorage;
57

68
/**
@@ -28,6 +30,20 @@ protected WxOpenInMemoryConfigStorage config(WxOpenInMemoryConfigStorage config,
2830
}
2931
config.setRetrySleepMillis(retrySleepMillis);
3032
config.setMaxRetryTimes(maxRetryTimes);
33+
34+
// 设置自定义的HttpClient超时配置
35+
ApacheHttpClientBuilder clientBuilder = config.getApacheHttpClientBuilder();
36+
if (clientBuilder == null) {
37+
clientBuilder = DefaultApacheHttpClientBuilder.get();
38+
}
39+
if (clientBuilder instanceof DefaultApacheHttpClientBuilder) {
40+
DefaultApacheHttpClientBuilder defaultBuilder = (DefaultApacheHttpClientBuilder) clientBuilder;
41+
defaultBuilder.setConnectionTimeout(storage.getConnectionTimeout());
42+
defaultBuilder.setSoTimeout(storage.getSoTimeout());
43+
defaultBuilder.setConnectionRequestTimeout(storage.getConnectionRequestTimeout());
44+
config.setApacheHttpClientBuilder(defaultBuilder);
45+
}
46+
3147
return config;
3248
}
3349
}

0 commit comments

Comments
 (0)