У меня есть два приложения веб-службы Java Spring Boot на одном сервере, вызывающие друг друга через REST.Служба A вызывает Службу B, и последняя успешно действует после уведомления.ПРОБЛЕМА заключается в том, что Сервис A никогда не получает подтверждение от Сервиса B, поэтому он считает, что произошел сбой, и в соответствии со своей логикой восстановления цикла он пытается снова… и снова… и снова.Служба B в конечном итоге выполняет работу в 3 раза больше без дополнительной выгоды.
Соответствующий код (урезанный и фальсифицированный для защиты виновных) выглядит следующим образом:
Сервис A:
public void giveOrderToServiceB(@RequestBody CustomClass message) {
...
org.springframework.web.client.RestTemplate template = new RestTemplate(clientHttpRequestFactory());
com.mycompany.CustomReply reply = template.postForObject(serviceBUrl, message, CustomReply.class);
Сервис B Контроллер REST:
@PostMapping(value="ExecuteTheWork", produces=org.springframework.http.MediaType.APPLICATION_JSON_VALUE, consumes=MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody CustomReply executeTheWork(@RequestBody CustomClass thing) {
// do something with the thing...
CustomReply reply = new CustomReply();
reply.setReply("Successfully executed the work.");
return reply;
}
Фактическое исключение, обнаруженное службой A после вызова RestTemplate.postForObject (), равно
java.net.SocketTimeoutException: Read timed out
Пожалуйста, сообщите.