Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
X
xzxt-app-report
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
xzxt-app-report
Commits
8f1097d3
Commit
8f1097d3
authored
Jan 08, 2024
by
liulianglang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
人像比对
parent
37e05b98
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
156 additions
and
3 deletions
+156
-3
src/main/java/org/springblade/founder/ryxscxbd/utils/HttpClientClose.java
+62
-0
src/main/java/org/springblade/founder/ryxscxbd/utils/HttpClientConfig.java
+87
-0
src/main/java/org/springblade/founder/ryxscxbd/utils/HttpClientService.java
+5
-3
src/main/java/org/springblade/founder/ryxscxbd/utils/RxbdUtils.java
+2
-0
No files found.
src/main/java/org/springblade/founder/ryxscxbd/utils/HttpClientClose.java
0 → 100644
View file @
8f1097d3
package
org
.
springblade
.
founder
.
ryxscxbd
.
utils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.http.impl.conn.PoolingHttpClientConnectionManager
;
import
org.apache.http.pool.PoolStats
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.PreDestroy
;
import
java.util.concurrent.TimeUnit
;
@Slf4j
@Component
//交给spring容器管理
public
class
HttpClientClose
extends
Thread
{
@Autowired
private
PoolingHttpClientConnectionManager
manage
;
private
volatile
boolean
shutdown
;
//开关 volatitle表示多线程可变数据,一个线程修改,其他线程立即修改
private
HttpClientClose
()
{
///System.out.println("执行构造方法,实例化对象");
//线程开启启动
this
.
start
();
}
@Override
public
void
run
()
{
try
{
//如果服务没有关闭,执行线程
while
(!
shutdown
)
{
synchronized
(
this
)
{
wait
(
5000
);
//等待5秒
//关闭超时的链接
PoolStats
stats
=
manage
.
getTotalStats
();
int
av
=
stats
.
getAvailable
();
//获取空闲的线程数量
int
pend
=
stats
.
getPending
();
//获取阻塞的线程数量
int
lea
=
stats
.
getLeased
();
//获取当前正在使用的链接数量
int
max
=
stats
.
getMax
();
if
(
lea
>=
200
||
pend
>=
200
){
log
.
info
(
"httpclient最大连接数为:"
+
max
+
",正在使用的连接数为:"
+
lea
+
",阻塞的线程数为:"
+
pend
+
",空闲线程数为:"
+
av
);
}
manage
.
closeExpiredConnections
();
manage
.
closeIdleConnections
(
30
,
TimeUnit
.
SECONDS
);
}
}
}
catch
(
Exception
e
)
{
log
.
error
(
"httpClient连接异常:"
+
e
.
getMessage
(),
""
,
""
);
e
.
printStackTrace
();
throw
new
RuntimeException
();
}
super
.
run
();
}
//关闭清理无效连接的线程
@PreDestroy
//容器关闭时执行该方法.
public
void
shutdown
()
{
shutdown
=
true
;
synchronized
(
this
)
{
//System.out.println("关闭全部链接!!");
notifyAll
();
//全部从等待中唤醒.执行关闭操作;
}
}
}
src/main/java/org/springblade/founder/ryxscxbd/utils/HttpClientConfig.java
0 → 100644
View file @
8f1097d3
package
org
.
springblade
.
founder
.
ryxscxbd
.
utils
;
import
org.apache.http.client.config.RequestConfig
;
import
org.apache.http.impl.client.CloseableHttpClient
;
import
org.apache.http.impl.client.HttpClientBuilder
;
import
org.apache.http.impl.conn.PoolingHttpClientConnectionManager
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.PropertySource
;
@Configuration
public
class
HttpClientConfig
{
private
Integer
maxTotal
=
64
;
//最大连接数
private
Integer
defaultMaxPerRoute
=
16
;
//最大并发链接数
private
Integer
connectTimeout
=
5000
;
//创建链接的最大时间
private
Integer
connectionRequestTimeout
=
30000
;
//链接获取超时时间
private
Integer
socketTimeout
=
30000
;
//数据传输最长时间
private
boolean
staleConnectionCheckEnabled
=
true
;
//提交时检查链接是否可用
//定义httpClient链接池
@Bean
(
name
=
"httpClientConnectionManager"
)
public
PoolingHttpClientConnectionManager
getPoolingHttpClientConnectionManager
()
{
PoolingHttpClientConnectionManager
manager
=
new
PoolingHttpClientConnectionManager
();
manager
.
setMaxTotal
(
maxTotal
);
//设定最大链接数
manager
.
setDefaultMaxPerRoute
(
defaultMaxPerRoute
);
//设定并发链接数
return
manager
;
}
//定义HttpClient
/**
* 实例化连接池,设置连接池管理器。
* 这里需要以参数形式注入上面实例化的连接池管理器
@Qualifier 指定bean标签进行注入
*/
@Bean
(
name
=
"httpClientBuilder"
)
public
HttpClientBuilder
getHttpClientBuilder
(
@Qualifier
(
"httpClientConnectionManager"
)
PoolingHttpClientConnectionManager
httpClientConnectionManager
){
//HttpClientBuilder中的构造方法被protected修饰,所以这里不能直接使用new来实例化一个HttpClientBuilder,可以使用HttpClientBuilder提供的静态方法create()来获取HttpClientBuilder对象
HttpClientBuilder
httpClientBuilder
=
HttpClientBuilder
.
create
();
httpClientBuilder
.
setConnectionManager
(
httpClientConnectionManager
);
return
httpClientBuilder
;
}
/**
* 注入连接池,用于获取httpClient
* @param httpClientBuilder
* @return
*/
@Bean
public
CloseableHttpClient
getCloseableHttpClient
(
@Qualifier
(
"httpClientBuilder"
)
HttpClientBuilder
httpClientBuilder
){
return
httpClientBuilder
.
build
();
}
/**
* Builder是RequestConfig的一个内部类
* 通过RequestConfig的custom方法来获取到一个Builder对象
* 设置builder的连接信息
* @return
*/
@Bean
(
name
=
"builder"
)
public
RequestConfig
.
Builder
getBuilder
(){
RequestConfig
.
Builder
builder
=
RequestConfig
.
custom
();
return
builder
.
setConnectTimeout
(
connectTimeout
)
.
setConnectionRequestTimeout
(
connectionRequestTimeout
)
.
setSocketTimeout
(
socketTimeout
)
.
setStaleConnectionCheckEnabled
(
staleConnectionCheckEnabled
);
}
/**
* 使用builder构建一个RequestConfig对象
* @param builder
* @return
*/
@Bean
public
RequestConfig
getRequestConfig
(
@Qualifier
(
"builder"
)
RequestConfig
.
Builder
builder
){
return
builder
.
build
();
}
}
src/main/java/org/springblade/founder/ryxscxbd/utils/HttpClientService.java
View file @
8f1097d3
...
...
@@ -19,18 +19,19 @@ import org.apache.http.impl.client.CloseableHttpClient;
import
org.apache.http.message.BasicNameValuePair
;
import
org.apache.http.util.EntityUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.StringUtils
;
import
org.springframework.web.multipart.MultipartFile
;
import
javax.annotation.Resource
;
import
java.io.IOException
;
import
java.io.UnsupportedEncodingException
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
@Service
@Slf4j
@Component
public
class
HttpClientService
{
@Autowired
private
CloseableHttpClient
httpClient
;
...
...
@@ -281,8 +282,9 @@ public class HttpClientService {
}
response
.
close
();
}
catch
(
IOException
e
)
{
log
.
info
(
"外部接口访问异常:"
+
e
.
getMessage
()
+
",请求地址为:"
+
url
+
",请求参数为:"
+
param
);
//
log.info("外部接口访问异常:" + e.getMessage() + ",请求地址为:" + url + ",请求参数为:" + param);
//result = e.getMessage();
e
.
printStackTrace
();
}
return
result
;
}
...
...
src/main/java/org/springblade/founder/ryxscxbd/utils/RxbdUtils.java
View file @
8f1097d3
...
...
@@ -13,6 +13,7 @@ import org.apache.http.entity.mime.content.InputStreamBody;
import
org.apache.http.entity.mime.content.StringBody
;
import
org.apache.http.impl.client.DefaultHttpClient
;
import
org.apache.http.util.EntityUtils
;
import
org.springframework.stereotype.Component
;
import
org.springframework.web.multipart.MultipartFile
;
import
javax.servlet.http.HttpServletRequest
;
...
...
@@ -26,6 +27,7 @@ import java.util.*;
* @date 2020/11/25 2:40 PM
* 人像比对封装方法
*/
@Component
public
class
RxbdUtils
{
private
static
final
String
FEISHI_URL
=
"http://68.174.25.90:9000/feiShi/sendFeiShiTask"
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment