DocumentaciónTargetGuía para desarrolladores de Target

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