【org.springframework.web.client.HttpServerErrorException$GatewayTimeout: 504 Gateway Time-out: [{“c】

记录一次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:504GatewayTimeout:["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服务时,应该单起一个线程,先将同步接口的结果返回,新线程去执行回调接口。

  • 29
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值