记录一次RestTemplate请求的异常
异常如下:
org.springframework.web.client.HttpServerErrorException$GatewayTimeout: 504 Gateway Time-out: [{“code”:“30005”, “message”:“JTEOP: response timeout”}]
出现异常的现象:
A服务要调用B服务,A服务提供一个回调接口供B服务把分析结果返回
A调用B服务时,B在返回同步结果前,先调用了A的回调接口,造成了此问题
如下文本异常是A端出现的异常
[2024-06-24 16:08:23,218] [http-nio-13711-exec-6] INFO [com.hcycom.collect.controller.HxwFaultLocationController:245] - 收到请求参数:{“ID”:“HXW:VOLTE:05F6688D08714BADB6F8289BDBD2EB22:20240624092337”}}
[2024-06-24 16:08:23,219] [http-nio-13711-exec-6] INFO [com.hcycom.collect.serviceImpl.hxwfault.Hxw2VoLTE0LocationServiceImplV2:251] - 【HXW-FAULT】VoLTE自动处置接口 请求:url=http://10.128.86.64:8000/serviceAgent/rest/ms/ims_backhaul/disposeCall/deal,params={“ID”:“HXW:VOLTE:05F6688D08714BADB6F8289BDBD2EB22:20240624092337”}
[2024-06-24 16:08:23,695] [http-nio-13711-exec-8] INFO [com.hcycom.collect.controller.HxwFaultLocationController:311] - VOLTE网管自动分析接口调用,收到请求参数:taskid=HXW:VOLTEDISPOSE:6EF175E4D90749EF865879727E1D4F32:20240624160823,headers={“accept-encoding”:[“gzip,deflate”],“host”:[“10.143.25.248-37412”],“connection”:[“close”],“content-length”:[“143”],“x-real-ip”:[“127.0.0.1”],“x-forwarded-host”:[“10.128.91.38”],“x-forwarded-proto”:[“http”],“x-forwarded-port”:[“20501”],“x-ctg-request-id”:[“9dcaf0b0-dfff-4346-885f-4fa9fe5fde49”],“x-app-id”:[“9d9f50ad67f06ea7a36ed86825febc41”],“x-app-key”:[“ca1807fcabdb553a135e8dfde3cbee76”],“taskid”:[“HXW:VOLTEDISPOSE:6EF175E4D90749EF865879727E1D4F32:20240624160823”],“accept”:[“/”],“content-type”:[“application/json;charset =UTF-8”],“user-agent”:[“Apache-HttpClient/4.5.6 (Java/1.8.0_301)”]},body={“DealMethod”:“自动”,“DealFinishTime”:“2024-06-24 16:08:22”,“DealProcess”:“为了解决该问题 做了xx操作”,“DealResult”:“处置成功”}
[2024-06-24 16:08:28,382] [http-nio-13711-exec-6] ERROR [com.hcycom.collect.serviceImpl.hxwfault.Hxw2VoLTE0LocationServiceImplV2:300] - Exception
org.springframework.web.client.HttpServerErrorException
G
a
t
e
w
a
y
T
i
m
e
o
u
t
:
504
G
a
t
e
w
a
y
T
i
m
e
−
o
u
t
:
[
"
c
o
d
e
"
:
"
30005
"
,
"
m
e
s
s
a
g
e
"
:
"
J
T
E
O
P
:
r
e
s
p
o
n
s
e
t
i
m
e
o
u
t
"
]
a
t
o
r
g
.
s
p
r
i
n
g
f
r
a
m
e
w
o
r
k
.
w
e
b
.
c
l
i
e
n
t
.
H
t
t
p
S
e
r
v
e
r
E
r
r
o
r
E
x
c
e
p
t
i
o
n
.
c
r
e
a
t
e
(
H
t
t
p
S
e
r
v
e
r
E
r
r
o
r
E
x
c
e
p
t
i
o
n
.
j
a
v
a
:
116
)
a
t
o
r
g
.
s
p
r
i
n
g
f
r
a
m
e
w
o
r
k
.
w
e
b
.
c
l
i
e
n
t
.
D
e
f
a
u
l
t
R
e
s
p
o
n
s
e
E
r
r
o
r
H
a
n
d
l
e
r
.
h
a
n
d
l
e
E
r
r
o
r
(
D
e
f
a
u
l
t
R
e
s
p
o
n
s
e
E
r
r
o
r
H
a
n
d
l
e
r
.
j
a
v
a
:
186
)
a
t
o
r
g
.
s
p
r
i
n
g
f
r
a
m
e
w
o
r
k
.
w
e
b
.
c
l
i
e
n
t
.
D
e
f
a
u
l
t
R
e
s
p
o
n
s
e
E
r
r
o
r
H
a
n
d
l
e
r
.
h
a
n
d
l
e
E
r
r
o
r
(
D
e
f
a
u
l
t
R
e
s
p
o
n
s
e
E
r
r
o
r
H
a
n
d
l
e
r
.
j
a
v
a
:
125
)
a
t
o
r
g
.
s
p
r
i
n
g
f
r
a
m
e
w
o
r
k
.
w
e
b
.
c
l
i
e
n
t
.
R
e
s
p
o
n
s
e
E
r
r
o
r
H
a
n
d
l
e
r
.
h
a
n
d
l
e
E
r
r
o
r
(
R
e
s
p
o
n
s
e
E
r
r
o
r
H
a
n
d
l
e
r
.
j
a
v
a
:
63
)
a
t
o
r
g
.
s
p
r
i
n
g
f
r
a
m
e
w
o
r
k
.
w
e
b
.
c
l
i
e
n
t
.
R
e
s
t
T
e
m
p
l
a
t
e
.
h
a
n
d
l
e
R
e
s
p
o
n
s
e
(
R
e
s
t
T
e
m
p
l
a
t
e
.
j
a
v
a
:
782
)
a
t
o
r
g
.
s
p
r
i
n
g
f
r
a
m
e
w
o
r
k
.
w
e
b
.
c
l
i
e
n
t
.
R
e
s
t
T
e
m
p
l
a
t
e
.
d
o
E
x
e
c
u
t
e
(
R
e
s
t
T
e
m
p
l
a
t
e
.
j
a
v
a
:
740
)
a
t
o
r
g
.
s
p
r
i
n
g
f
r
a
m
e
w
o
r
k
.
w
e
b
.
c
l
i
e
n
t
.
R
e
s
t
T
e
m
p
l
a
t
e
.
e
x
e
c
u
t
e
(
R
e
s
t
T
e
m
p
l
a
t
e
.
j
a
v
a
:
674
)
a
t
o
r
g
.
s
p
r
i
n
g
f
r
a
m
e
w
o
r
k
.
w
e
b
.
c
l
i
e
n
t
.
R
e
s
t
T
e
m
p
l
a
t
e
.
p
o
s
t
F
o
r
E
n
t
i
t
y
(
R
e
s
t
T
e
m
p
l
a
t
e
.
j
a
v
a
:
449
)
a
t
c
o
m
.
h
c
y
c
o
m
.
c
o
l
l
e
c
t
.
s
e
r
v
i
c
e
I
m
p
l
.
h
x
w
f
a
u
l
t
.
H
x
w
2
V
o
L
T
E
0
L
o
c
a
t
i
o
n
S
e
r
v
i
c
e
I
m
p
l
V
2.
r
e
s
t
f
u
l
GatewayTimeout: 504 Gateway Time-out: [{"code":"30005", "message":"JTEOP: response timeout"}] at org.springframework.web.client.HttpServerErrorException.create(HttpServerErrorException.java:116) at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:186) at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:125) at org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:63) at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:782) at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:740) at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:674) at org.springframework.web.client.RestTemplate.postForEntity(RestTemplate.java:449) at com.hcycom.collect.serviceImpl.hxwfault.Hxw2VoLTE0LocationServiceImplV2.restful
GatewayTimeout:504GatewayTime−out:["code":"30005","message":"JTEOP:responsetimeout"]atorg.springframework.web.client.HttpServerErrorException.create(HttpServerErrorException.java:116)atorg.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:186)atorg.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:125)atorg.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:63)atorg.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:782)atorg.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:740)atorg.springframework.web.client.RestTemplate.execute(RestTemplate.java:674)atorg.springframework.web.client.RestTemplate.postForEntity(RestTemplate.java:449)atcom.hcycom.collect.serviceImpl.hxwfault.Hxw2VoLTE0LocationServiceImplV2.restfulVoLTEDisposeCall(Hxw2VoLTE0LocationServiceImplV2.java:252)
at com.hcycom.collect.controller.HxwFaultLocationController.hxw1VoLTEDisposeCall(HxwFaultLocationController.java:248)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:878)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:792)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
如下文本异常是B端出现的异常
B端的代码如下
由此可见B端做的是同步接口
解决办法
B端服务,回调A服务时,应该单起一个线程,先将同步接口的结果返回,新线程去执行回调接口。