**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)**