Asynkrona begäranden (Java)

Beskrivning

En fördel med integration på serversidan är att du kan utnyttja den enorma bandbredd och de datorresurser som finns tillgängliga på serversidan genom att använda parallellitet. Target Java SDK har stöd för asynkrona begäranden, vilket kan minska den effektiva måltiden till noll.

Metoder som stöds

Metoder

CompletableFuture<TargetDeliveryResponse> getOffersAsync(TargetDeliveryRequest request);
CompletableFuture<ResponseStatus> sendNotificationsAsync(TargetDeliveryRequest request);
CompletableFuture<Attributes> getAttributesAsync(TargetDeliveryRequest targetRequest, String ...mboxes);

Exempel

Ett exempel på Spring-programstyrenhet kan se ut så här:

Exempelstyrenhet

@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();
        }
    }

}

I det här exemplet antas att du har initierat SDK som en vårböna och att du har verktygsmetoder tillgängliga.

Target-begäran utlöses före simulateIO och när den körs bör målresultatet också vara klart. Även om så inte är fallet har ni stora besparingar i de flesta fall.

recommendation-more-help
6906415f-169c-422b-89d3-7118e147c4e3