why i get Timeout exception in Klaviyo mail service

12 Views Asked by At

**Here i am send email via Klaviyo but it gives Timeout Execption even it take less Time to genarate profile and send mail **

   public Boolean sendUpdatedReferralToRegisteredUsers(UserProfileDTO userProfileDTO, KlaviyoProperties klaviyoProperties, KlaviyoEmailType klaviyoEmailType) {
    WebClient client = WebClient.builder().baseUrl(KLAVIYO_BASE_URL)
            .defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).build();
    KlaviyoProfile klaviyoUser = null;
    
    klaviyoUser = checkKlaviyoProfilePresent(userProfileDTO.getUser().getEmail());
    
    if(klaviyoUser != null && klaviyoUser.getData().getId() != null) {
        klaviyoUser.getData().getAttributes().setFirst_name(userProfileDTO.getUser().getFirstName());
        klaviyoUser.getData().getAttributes().setLast_name(userProfileDTO.getUser().getLastName());
        try {
            klaviyoUser = client.patch().uri(KLAVIYO_PROFILE_ENDPOINT.concat(klaviyoUser.getData().getId()))
                    .headers(h -> h.addAll(getHeaders())).body(Mono.just(klaviyoUser), KlaviyoProfile.class)
                    .retrieve().bodyToMono(KlaviyoProfile.class).timeout(Duration.ofSeconds(60)).block();
            
            KlaviyoEvent klaviyoEvent = klaviyoEventPayload(klaviyoEmailType, klaviyoUser, klaviyoProperties);
            client.post().uri(KLAVIYO_EVENT_ENDPOINT)
            .headers(h -> h.addAll(getHeaders())).body(Mono.just(klaviyoEvent), KlaviyoEvent.class)
            .retrieve().bodyToMono(KlaviyoProfile.class).timeout(Duration.ofSeconds(60))
            .block();
        } catch(WebClientResponseException e) {
            log.debug(e.toString());
            return false;
        }
    } else {
        KlaviyoProfile profile = createKlaviyoProfile(userProfileDTO);
        profile.getData().getAttributes().setFirst_name(userProfileDTO.getUser().getFirstName());
        profile.getData().getAttributes().setLast_name(userProfileDTO.getUser().getLastName());
        try {
            klaviyoUser = client.post().uri(KLAVIYO_PROFILE_ENDPOINT).headers(h -> h.addAll(getHeaders()))
                    .body(Mono.just(profile), KlaviyoProfile.class).retrieve().bodyToMono(KlaviyoProfile.class)
                    .timeout(Duration.ofSeconds(60)).block();
            
            KlaviyoEvent klaviyoEvent = klaviyoEventPayload(KlaviyoEmailType.UPDATEREFERRAL, klaviyoUser, klaviyoProperties);
            
            client.post().uri(KLAVIYO_EVENT_ENDPOINT)
            .headers(h -> h.addAll(getHeaders())).body(Mono.just(klaviyoEvent), KlaviyoEvent.class)
            .retrieve().bodyToMono(KlaviyoProfile.class).timeout(Duration.ofSeconds(60))
            .block();               
        } catch (WebClientResponseException e) {
            log.debug(e.toString());
            return false;
        }
    }
    return true;
}

**Here i get error Like

java.util.concurrent.TimeoutException: Did not observe any item or terminal signal within 60000ms in 'flatMap' (and no fallback has been configured)**

0

There are 0 best solutions below