在循环中连续调用Spring boot Resttemplate时会挂起一段时间
我使用SpringRestTemplate调用RESTAPI服务来获得响应,但当我密切监视它时,resttemplate会被卡住一段时间,然后再次启动,这会减慢整个过程。我在下面添加了我的resttemplate代码以供参考,我正在类文件中自动连接这个bean在循环中连续调用Spring boot Resttemplate时会挂起一段时间,spring,spring-boot,spring-resttemplate,Spring,Spring Boot,Spring Resttemplate,我使用SpringRestTemplate调用RESTAPI服务来获得响应,但当我密切监视它时,resttemplate会被卡住一段时间,然后再次启动,这会减慢整个过程。我在下面添加了我的resttemplate代码以供参考,我正在类文件中自动连接这个bean @Bean public RestTemplate restTemplate(RestTemplateBuilder builder) { return builder.errorHandler(new M
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
return builder.errorHandler(new MyApiRestTemplateErrorHandler()).build();
}
public String dynamodbcreateupdate(JSONObject preference, String eventType) {
String finalResponse = "";
String login = "";
if (preference.has(ConstantsHelper.KEY_LOGIN)) {
login = preference.getString(ConstantsHelper.KEY_LOGIN);
}
String uricreateupdate = "";
if (eventType.equalsIgnoreCase(ConstantsHelper.STATUS_CREATE)) {
uricreateupdate = dynamodbWrite + ConstantsHelper.URI_PARAM + dynamodbtablename
+ ConstantsHelper.DYNAMODB_QPARAM + login + "";
} else {
// Remove login primary key while update
if (preference.has(ConstantsHelper.KEY_LOGIN)) {
preference.remove(ConstantsHelper.KEY_LOGIN);
}
uricreateupdate = dynamodbUpdate + ConstantsHelper.URI_PARAM + dynamodbtablename
+ ConstantsHelper.DYNAMODB_QPARAM + login + "";
}
ResponseEntity<String> responsedoc = null;
HttpHeaders headersdoc = new HttpHeaders();
headersdoc.setContentType(MediaType.APPLICATION_JSON);
headersdoc.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
headersdoc.setAccessControlAllowOrigin("*");
HttpEntity<String> entitydoc = new HttpEntity<>(preference.toString(), headersdoc);
responsedoc = restTemplate.exchange(uricreateupdate, HttpMethod.POST, entitydoc, String.class);
finalResponse = responsedoc.getBody().toString();
return finalResponse;
}
@Bean
公共RestTemplate RestTemplate(RestTemplateBuilder){
返回builder.errorHandler(新的MyApiRestTemplateErrorHandler()).build();
}
公共字符串dynamodbcreateupdate(JSONObject首选项,字符串事件类型){
字符串finalResponse=“”;
字符串login=“”;
if(preference.has(ConstantsHelper.KEY_登录)){
login=preference.getString(ConstantsHelper.KEY\u login);
}
字符串uricreateupdate=“”;
if(eventType.equalsIgnoreCase(ConstantsHelper.STATUS_CREATE)){
uricreateupdate=dynamodbWrite+ConstantsHelper.URI_PARAM+dynamodbtablename
+ConstantsHelper.dynamodbqparam+login+“”;
}否则{
//更新时删除登录主键
if(preference.has(ConstantsHelper.KEY_登录)){
删除(ConstantsHelper.KEY\u登录);
}
uricreateupdate=dynamodbUpdate+ConstantsHelper.URI_PARAM+dynamodbtablename
+ConstantsHelper.dynamodbqparam+login+“”;
}
ResponseEntity responsedoc=null;
HttpHeadersDoc=新的HttpHeaders();
headersdoc.setContentType(MediaType.APPLICATION_JSON);
headersdoc.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
headersdoc.setAccessControlAllowOrigin(“*”);
HttpEntity entitydoc=新的HttpEntity(preference.toString(),headersdoc);
responsedoc=restTemplate.exchange(uricreateupdate,HttpMethod.POST,entitydoc,String.class);
finalResponse=responsedoc.getBody().toString();
返回最终响应;
}
resttemplate通过循环的连续调用如此之慢,以至于我无法跟踪它,原因是什么。请分享对这个问题的看法
如前所述,我发布了使用resttemplate调用RESTAPI的全部代码。这是AWS dynamoDB创建/更新请发布在循环中调用外部REST API的实际代码片段