Solicitudes asincrónicas (Java)
Última actualización: 20 de julio de 2024
- Temas:
- APIs/SDKs
Creado para:
- Desarrollador
Descripción
Una ventaja de la integración del lado del servidor es que puede aprovechar el enorme ancho de banda y recursos informáticos disponibles en el lado del servidor mediante el paralelismo. Target El SDK de Java admite solicitudes asincrónicas, lo que puede reducir el tiempo de destino efectivo a cero.
Métodos compatibles
Métodos
CompletableFuture<TargetDeliveryResponse> getOffersAsync(TargetDeliveryRequest request);
CompletableFuture<ResponseStatus> sendNotificationsAsync(TargetDeliveryRequest request);
CompletableFuture<Attributes> getAttributesAsync(TargetDeliveryRequest targetRequest, String ...mboxes);
Ejemplo
Un controlador de aplicación Spring
de ejemplo podría tener este aspecto:
Controlador de muestra
@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();
}
}
}
En este ejemplo se supone que ha inicializado el SDK como un bean de primavera y que tiene métodos de utilidad disponibles.
La solicitud Target se activa antes de simulateIO
y, para el momento en que se ejecute, el resultado de destino también debe estar listo. Incluso si no lo es, usted tendrá ahorros significativos en la mayoría de los casos.
recommendation-more-help
6906415f-169c-422b-89d3-7118e147c4e3