Asynchrone verzoeken (Java)
Laatst bijgewerkt: 27 juli 2023
- Onderwerpen:
- APIs/SDKs
Gemaakt voor:
- Ontwikkelaar
Beschrijving
Een voordeel van integratie aan de serverzijde is dat u de enorme bandbreedte en computerbronnen die beschikbaar zijn aan de serverzijde kunt benutten door parallellisme te gebruiken. Target Java SDK ondersteunt asynchrone aanvragen, waardoor de effectieve doeltijd tot nul kan worden teruggebracht.
Ondersteunde methoden
Methoden
CompletableFuture<TargetDeliveryResponse> getOffersAsync(TargetDeliveryRequest request);
CompletableFuture<ResponseStatus> sendNotificationsAsync(TargetDeliveryRequest request);
CompletableFuture<Attributes> getAttributesAsync(TargetDeliveryRequest targetRequest, String ...mboxes);
Voorbeeld
Een monster Spring
De toepassingscontroller kan er als volgt uitzien:
Voorbeeldecontrole
@RestController
public class TargetRestController {
@Autowired
private TargetClient targetJavaClient;
@GetMapping("/mboxTargetOnlyAsync")
public TargetDeliveryResponse mboxTargetOnlyAsync(
@RequestParam(name = "mbox", defaultValue = "server-side-mbox") String mbox,
HttpServletRequest request, HttpServletResponse response) {
ExecuteRequest executeRequest = new ExecuteRequest()
.mboxes(getMboxRequests(mbox));
TargetDeliveryRequest targetDeliveryRequest = TargetDeliveryRequest.builder()
.context(getContext(request))
.execute(executeRequest)
.cookies(getTargetCookies(request.getCookies()))
.build();
CompletableFuture<TargetDeliveryResponse> targetResponseAsync =
targetJavaClient.getOffersAsync(targetDeliveryRequest);
targetResponseAsync.thenAccept(tr -> setCookies(tr.getCookies(), response));
simulateIO();
TargetDeliveryResponse targetResponse = targetResponseAsync.join();
return targetResponse;
}
/**
* Function for simulating network calls like other microservices and database calls
*/
private void simulateIO() {
try {
Thread.sleep(200L);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
In dit voorbeeld wordt ervan uitgegaan dat u geïnitialiseerd de SDK als boerenboon en Hulpprogrammamethoden beschikbaar.
De Target aanvraag wordt gestart voordat simulateIO
en tegen de tijd dat het doelresultaat wordt uitgevoerd zou ook klaar moeten zijn. Zelfs als dat niet het geval is, zult u in de meeste gevallen aanzienlijke besparingen hebben.
recommendation-more-help
6906415f-169c-422b-89d3-7118e147c4e3