Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
J
jiwei-api
Project
Project
Details
Activity
Releases
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
马天浩
jiwei-api
Commits
92f1adcd
Commit
92f1adcd
authored
Jan 19, 2021
by
matianhao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[瑞成接口] <rollack> 增加请求秘钥和过期时间日志
parent
da7c05a9
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
98 additions
and
40 deletions
+98
-40
pom.xml
pom.xml
+67
-11
RequestSecretSchedulerTask.java
...h/requestsecret/scheduler/RequestSecretSchedulerTask.java
+1
-0
RestTemplateService.java
...va/com/mth/requestsecret/service/RestTemplateService.java
+30
-29
No files found.
pom.xml
View file @
92f1adcd
...
...
@@ -59,18 +59,17 @@
<version>
2.3.0.RELEASE
</version>
</dependency>
<dependency>
<groupId>
com.alibaba.cloud
</groupId>
<artifactId>
spring-cloud-starter-alibaba-nacos-discovery
</artifactId>
<version>
2.1.1.RELEASE
</version>
</dependency>
<dependency>
<groupId>
com.alibaba.cloud
</groupId>
<artifactId>
spring-cloud-starter-alibaba-nacos-config
</artifactId>
<version>
2.1.1.RELEASE
</version>
</dependency>
<!--<dependency>-->
<!--<groupId>com.alibaba.cloud</groupId>-->
<!--<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>-->
<!--<version>2.1.1.RELEASE</version>-->
<!--</dependency>-->
<!--<dependency>-->
<!--<groupId>com.alibaba.cloud</groupId>-->
<!--<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>-->
<!--<version>2.1.1.RELEASE</version>-->
<!--</dependency>-->
<!-- https://mvnrepository.com/artifact/org.json/json -->
...
...
@@ -105,6 +104,63 @@
<version>
2.1.3
</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
<dependency>
<groupId>
commons-httpclient
</groupId>
<artifactId>
commons-httpclient
</artifactId>
<version>
3.1
</version>
</dependency>
<dependency>
<groupId>
org.apache.commons
</groupId>
<artifactId>
commons-io
</artifactId>
<version>
1.3.2
</version>
</dependency>
<dependency>
<groupId>
org.apache.axis2
</groupId>
<artifactId>
axis2-adb
</artifactId>
<version>
1.1.1
</version>
</dependency>
<dependency>
<groupId>
org.apache.axis2
</groupId>
<artifactId>
axis2-transport-local
</artifactId>
<version>
1.7.9
</version>
</dependency>
<dependency>
<groupId>
org.apache.axis2
</groupId>
<artifactId>
axis2-transport-http-tests
</artifactId>
<version>
1.0.0
</version>
</dependency>
<dependency>
<groupId>
commons-httpclient
</groupId>
<artifactId>
commons-httpclient
</artifactId>
<version>
3.1
</version>
</dependency>
<dependency>
<groupId>
org.apache.axis2
</groupId>
<artifactId>
axis2-kernel
</artifactId>
<version>
1.1.1
</version>
</dependency>
<dependency>
<groupId>
org.apache.ws.commons.axiom
</groupId>
<artifactId>
axiom-api
</artifactId>
<version>
1.2.5
</version>
</dependency>
<dependency>
<groupId>
org.apache.ws.commons.axiom
</groupId>
<artifactId>
axiom-impl
</artifactId>
<version>
1.2.2
</version>
</dependency>
<dependency>
<groupId>
org.apache.ws.commons.schema
</groupId>
<artifactId>
XmlSchema
</artifactId>
<version>
1.4.7
</version>
</dependency>
<dependency>
<groupId>
org.lucee
</groupId>
<artifactId>
wsdl4j
</artifactId>
<version>
1.5.1
</version>
</dependency>
</dependencies>
...
...
src/main/java/com/mth/requestsecret/scheduler/RequestSecretSchedulerTask.java
View file @
92f1adcd
...
...
@@ -110,6 +110,7 @@ public class RequestSecretSchedulerTask implements SchedulingConfigurer {
refreshSecretEndTime
=
Long
.
parseLong
(
datas
.
getString
(
"refreshSecretEndTime"
));
// 设置过期时间,30秒内不重新刷新秘钥
String
expireTime
=
String
.
valueOf
(
requestSecretEndTime
-
(
14
*
60
*
1000
+
30
*
1000
));
// redis保存 请求秘钥 和 过期时间
log
.
info
(
"请求秘钥:{};请求秘钥过期时间:{};30s内不刷新秘钥:{}"
,
requestSecret
,
...
...
src/main/java/com/mth/requestsecret/service/RestTemplateService.java
View file @
92f1adcd
...
...
@@ -13,11 +13,14 @@ import org.springframework.util.LinkedMultiValueMap;
import
org.springframework.util.MultiValueMap
;
import
org.springframework.web.client.RestTemplate
;
import
java.time.Instant
;
import
java.time.LocalDateTime
;
import
java.time.ZoneOffset
;
import
java.util.Date
;
import
java.util.Map
;
import
java.util.Objects
;
import
static
com
.
mth
.
requestsecret
.
constant
.
Constants
.
SJJ_REQUEST_SECRET_PREFIX
;
import
static
com
.
mth
.
requestsecret
.
constant
.
Constants
.
*
;
/**
* @author fyl
...
...
@@ -41,8 +44,6 @@ public class RestTemplateService {
private
ThreadLocal
<
Integer
>
threadLocal
=
ThreadLocal
.
withInitial
(()
->
0
);
private
static
final
Integer
REQUEST_LIMIT
=
20
;
@Value
(
"${ruicheng.address}"
)
private
String
pathUrl
;
...
...
@@ -108,32 +109,32 @@ public class RestTemplateService {
ResponseEntity
<
String
>
responseEntity
=
restTemplate
.
exchange
(
url
.
toString
(),
HttpMethod
.
POST
,
request
,
String
.
class
);
log
.
info
(
"api response:{}"
,
responseEntity
);
//
try {
//
// 接口返回码
//
String code = JSONObject.parseObject(responseEntity.getBody()).getString("code");
//
Integer count = threadLocal.get();
//
String threadName = Thread.currentThread().getName();
//
// // 如非成功返回码,则重新获取秘钥并发送请求,限制重新请求次数
// if (!RESPONSE_CODE_00.equals(code) && count < REQUEST_LIMIT
) {
//
threadLocal.set(++count);
//
log.info("线程名称:{},重新请求次数:{}", threadName, count);
//
// redis 中获取过期时间
//
String expireTimeStr = redisUtil.get(SJJ_REQUEST_EXPIRE_TIME_PREFIX);
//
LocalDateTime expireTime = Instant.ofEpochMilli(Long.parseLong(expireTimeStr)).atZone(ZoneOffset.ofHours(8)).toLocalDateTime();
//
LocalDateTime now = LocalDateTime.now();
//
// 当前时间超过过期时间,重新请求秘钥,否则重新发送请求
//
if (now.isAfter(expireTime)) {
//
log.info("redis中过期时间:{},当前时间:{}", expireTime, now);
//
// 重新获取秘钥
//
schedulerTask.getRequestSecret();
//
}
//
// 重新调用请求
//
return commonSendRequest(paramMap, apiMethod);
//
}
//
} finally {
//
threadLocal.remove();
//
}
try
{
// 接口返回码
String
code
=
JSONObject
.
parseObject
(
responseEntity
.
getBody
()).
getString
(
"code"
);
Integer
count
=
threadLocal
.
get
();
String
threadName
=
Thread
.
currentThread
().
getName
();
// 如非成功返回码,则重新获取秘钥并发送请求,限制重新请求次数两次
if
(!
RESPONSE_CODE_00
.
equals
(
code
)
&&
count
<
2
)
{
threadLocal
.
set
(++
count
);
log
.
info
(
"线程名称:{},重新请求次数:{}"
,
threadName
,
count
);
// redis 中获取过期时间
String
expireTimeStr
=
redisUtil
.
get
(
SJJ_REQUEST_EXPIRE_TIME_PREFIX
);
LocalDateTime
expireTime
=
Instant
.
ofEpochMilli
(
Long
.
parseLong
(
expireTimeStr
)).
atZone
(
ZoneOffset
.
ofHours
(
8
)).
toLocalDateTime
();
LocalDateTime
now
=
LocalDateTime
.
now
();
// 当前时间超过过期时间,重新请求秘钥,否则重新发送请求
if
(
now
.
isAfter
(
expireTime
))
{
log
.
info
(
"redis中过期时间:{},当前时间:{}"
,
expireTime
,
now
);
// 重新获取秘钥
schedulerTask
.
getRequestSecret
();
}
// 重新调用请求
return
commonSendRequest
(
paramMap
,
apiMethod
);
}
}
finally
{
threadLocal
.
remove
();
}
return
responseEntity
;
}
...
...
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