Ошибка подключения RestTemplate после перехода с загрузочного 2.2.5.ВЫПУСКА на 2.4.6

#java #spring-boot #rest #kubernetes #resttemplate

Вопрос:

У меня есть 2 микроуслуги, которые обмениваются данными с помощью простого вызова ResT. У меня есть сценарий , в котором электронную почту необходимо отправить пользователю и администратору, поэтому от службы 1 к службе 2 поступают два звонка .

  **log.info("sending mail to user {}", ticketDetailsDto.getEmail());

        // Send Email to User
        **emailServiceUtils.emailServiceCall(notificationDtoForUser, ServiceEndPoint.EMAIL_URL_UNAUTHENTICATE);**

        NotificationDto notificationDtoAdmin = new NotificationDto();
        notificationDtoAdmin.setRecipient(applicationConfig.getSupportEmail());
        notificationDtoAdmin.setTemplateId(EmailTemplate.SUPPORT_ADMIN);
        notificationDtoAdmin.setData(dataOfUser);

        log.info("sending mail to {}", applicationConfig.getSupportEmail());
        log.debug("email service url {}", applicationConfig.emailServiceInstance()   ServiceEndPoint.EMAIL_URL_UNAUTHENTICATE);

        //Send Email to Admin
        emailServiceUtils.emailServiceCall(notificationDtoAdmin, ServiceEndPoint.EMAIL_URL_UNAUTHENTICATE);

        return "Your request sent to support team";**
 

метод вызова службы электронной почты выглядит следующим образом .

 public String emailServiceCall(NotificationDto notificationDto, String url) {
    try {
        UriComponentsBuilder uriBuilder = getUriComponentsBuilder(url);

        log.info("email service url {}", uriBuilder.build().toUri());
        HttpHeaders requestHeaders = new HttpHeaders();
        requestHeaders.setContentType(MediaType.APPLICATION_JSON);
        requestHeaders.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
        requestHeaders.add(Constants.AUTHORIZATION, requestScopedStorageService.getToken());

        restTemplate.setErrorHandler(new ExceptionHandler());
        HttpEntity<?> requestEntity = new HttpEntity<>(notificationDto, requestHeaders);
        restTemplate.exchange(uriBuilder.build().toUri(), HttpMethod.POST, requestEntity, String.class);


    } catch (RestClientException e) {
        e.printStackTrace();

    }
    return "email send";
}
 

Теперь звонки начали прерываться.

 2021-08-18 10:25:14.262 ERROR 1 --- [nio-8089-exec-8] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.web.client.ResourceAccessException: I/O error on POST request for "http://email-service/email/sendThroughTemplateUnAuthenticated": Connection timed out (Connection timed out); nested exception is java.net.ConnectException: Connection timed out (Connection timed out)] with root cause

java.net.ConnectException: Connection timed out (Connection timed out)
    at java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.8.0_302]
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_302]
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[na:1.8.0_302]
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[na:1.8.0_302]
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_302]
    at java.net.Socket.connect(Socket.java:607) ~[na:1.8.0_302]
    at java.net.Socket.connect(Socket.java:556) ~[na:1.8.0_302]
    at sun.net.NetworkClient.doConnect(NetworkClient.java:180) ~[na:1.8.0_302]
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:463) ~[na:1.8.0_302]
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:558) ~[na:1.8.0_302]
    at sun.net.www.http.HttpClient.<init>(HttpClient.java:242) ~[na:1.8.0_302]
    at sun.net.www.http.HttpClient.New(HttpClient.java:339) ~[na:1.8.0_302]
    at sun.net.www.http.HttpClient.New(HttpClient.java:357) ~[na:1.8.0_302]
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1226) ~[na:1.8.0_302]
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1162) ~[na:1.8.0_302]
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1056) ~[na:1.8.0_302]
    at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:990) ~[na:1.8.0_302]
 

Это начало происходить после того , как я обновил spring boot с версии 2.2.5.RELEASE до версии 2.4.6, интересно, что это работает, если я понизил версию до версии 2.2.5.RELEASE.

Комментарии:

1. Проверьте URL-адрес, правильный он или нет, если да, то служба запущена или нет. электронная почта-сервис/электронная почта/отправка по электронной почте не подтверждена .

2. URL-адрес правильный , и модуль исправен, иначе первый вызов не прошел бы