Example usage for org.springframework.util.concurrent ListenableFuture addCallback

List of usage examples for org.springframework.util.concurrent ListenableFuture addCallback

Introduction

In this page you can find the example usage for org.springframework.util.concurrent ListenableFuture addCallback.

Prototype

void addCallback(SuccessCallback<? super T> successCallback, FailureCallback failureCallback);

Source Link

Document

Java 8 lambda-friendly alternative with success and failure callbacks.

Usage

From source file:ch.rasc.wampspring.demo.client.CallClient.java

public static void main(String[] args) throws InterruptedException {
    WebSocketClient webSocketClient = new StandardWebSocketClient();
    JsonFactory jsonFactory = new MappingJsonFactory(new ObjectMapper());

    CountDownLatch latch = new CountDownLatch(1_000_000);
    TestTextWebSocketHandler handler = new TestTextWebSocketHandler(jsonFactory, latch);

    Long[] start = new Long[1];
    ListenableFuture<WebSocketSession> future = webSocketClient.doHandshake(handler,
            "ws://localhost:8080/wamp");
    future.addCallback(wss -> {
        start[0] = System.currentTimeMillis();
        for (int i = 0; i < 1_000_000; i++) {

            CallMessage callMessage = new CallMessage(UUID.randomUUID().toString(), "testService.sum", i,
                    i + 1);// ww  w  .  j  av  a2  s  . c  o  m
            try {
                wss.sendMessage(new TextMessage(callMessage.toJson(jsonFactory)));
            } catch (Exception e) {
                System.out.println("ERROR SENDING CALLMESSAGE" + e);
                latch.countDown();
            }
        }

    }, t -> {
        System.out.println("DO HANDSHAKE ERROR: " + t);
        System.exit(1);
    });

    if (!latch.await(3, TimeUnit.MINUTES)) {
        System.out.println("SOMETHING WENT WRONG");
    }

    System.out.println((System.currentTimeMillis() - start[0]) / 1000 + " seconds");
    System.out.println("SUCCESS: " + handler.getSuccess());
    System.out.println("ERROR  : " + handler.getError());
}

From source file:ch.rasc.wampspring.demo.client.CallClientSockJs.java

public static void main(String[] args) throws InterruptedException {

    List<Transport> transports = new ArrayList<>(2);
    transports.add(new WebSocketTransport(new StandardWebSocketClient()));
    transports.add(new RestTemplateXhrTransport());
    WebSocketClient webSocketClient = new SockJsClient(transports);

    JsonFactory jsonFactory = new MappingJsonFactory(new ObjectMapper());

    CountDownLatch latch = new CountDownLatch(10_000);
    TestTextWebSocketHandler handler = new TestTextWebSocketHandler(jsonFactory, latch);

    Long[] start = new Long[1];
    ListenableFuture<WebSocketSession> future = webSocketClient.doHandshake(handler,
            "ws://localhost:8080/wampOverSockJS");
    future.addCallback(wss -> {
        start[0] = System.currentTimeMillis();
        for (int i = 0; i < 10_000; i++) {

            CallMessage callMessage = new CallMessage(UUID.randomUUID().toString(), "testService.sum", i,
                    i + 1);/*from w  ww  .j  a  v  a2 s.c  o m*/
            try {
                wss.sendMessage(new TextMessage(callMessage.toJson(jsonFactory)));
            } catch (Exception e) {
                System.out.println("ERROR SENDING CALLMESSAGE" + e);
                latch.countDown();
            }
        }

    }, t -> {
        System.out.println("DO HANDSHAKE ERROR: " + t);
        System.exit(1);
    });

    if (!latch.await(3, TimeUnit.MINUTES)) {
        System.out.println("SOMETHING WENT WRONG");
    }

    System.out.println((System.currentTimeMillis() - start[0]) / 1000 + " seconds");
    System.out.println("SUCCESS: " + handler.getSuccess());
    System.out.println("ERROR  : " + handler.getError());
}

From source file:ch.rasc.wampspring.demo.client.Publisher.java

public static void main(String[] args) throws InterruptedException {

    WebSocketClient webSocketClient = new StandardWebSocketClient();
    final JsonFactory jsonFactory = new MappingJsonFactory(new ObjectMapper());

    final CountDownLatch welcomeLatch = new CountDownLatch(1);
    final CountDownLatch latch = new CountDownLatch(1_000_000);
    TextWebSocketHandler handler = new TextWebSocketHandler() {

        @Override/*from   w w  w.ja v  a2  s.c  o  m*/
        protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
            WampMessage wampMessage = WampMessage.fromJson(jsonFactory, message.getPayload());

            if (wampMessage instanceof WelcomeMessage) {
                latch.countDown();
            }

        }

    };

    Long[] start = new Long[1];
    ListenableFuture<WebSocketSession> future = webSocketClient.doHandshake(handler,
            "ws://localhost:8080/wamp");
    future.addCallback(wss -> {

        // Waiting for WELCOME message
        try {
            welcomeLatch.await(5, TimeUnit.SECONDS);

            start[0] = System.currentTimeMillis();
            for (int i = 0; i < 1_000_000; i++) {
                PublishMessage publishMessage = new PublishMessage("/test/myqueue", i);
                try {
                    wss.sendMessage(new TextMessage(publishMessage.toJson(jsonFactory)));
                } catch (Exception e) {
                    System.out.println("ERROR SENDING PUBLISH_MESSAGE" + e);
                }
                latch.countDown();
            }

        } catch (Exception e1) {
            System.out.println("SENDING PUBLISH MESSAGES: " + e1);
        }

    }, t -> {
        System.out.println("DO HANDSHAKE ERROR: " + t);
        System.exit(1);
    });

    if (!latch.await(3, TimeUnit.MINUTES)) {
        System.out.println("SOMETHING WENT WRONG");
    }
    System.out.println((System.currentTimeMillis() - start[0]) / 1000 + " seconds");
}

From source file:kymr.github.io.future.FutureSpringApplication.java

@Bean
ApplicationRunner run() {//w  ww.  j av a  2s .c  om
    /*
    return args -> {
       log.info("run()");
       Future<String> f = myService.hello();
       log.info("exit : {}", f.isDone());
       log.info("result : {}", f.get());
    };
    */
    return args -> {
        log.info("run()");
        ListenableFuture<String> f = myService.hello2();
        f.addCallback(s -> System.out.println(s), e -> System.out.println(e));

        log.info("exit");
    };
}

From source file:org.mimacom.sample.integration.patterns.user.service.integration.AsyncSearchServiceIntegration.java

public void indexUser(User user, Consumer<Void> successConsumer, Consumer<Throwable> failureConsumer) {
    LOG.info("going to send request to index user '{}' '{}'", user.getFirstName(), user.getLastName());

    HttpEntity<User> requestEntity = new HttpEntity<>(user);
    ListenableFuture<ResponseEntity<String>> listenableFuture = this.asyncRestTemplate
            .postForEntity(this.searchServiceUrl + "/index", requestEntity, String.class);

    listenableFuture.addCallback(result -> {
        LOG.info("user '{}' '{}' was indexed and response status code was '{}'", user.getFirstName(),
                user.getLastName(), result.getStatusCode());
        successConsumer.accept(null);/*from  w  ww  .j a va2 s. c  o m*/
    }, failureConsumer::accept);

}

From source file:org.mimacom.sample.integration.patterns.user.service.integration.BulkHeadedSearchServiceIntegration.java

public void indexUser(User user, Consumer<Void> successConsumer, Consumer<Throwable> failureConsumer) {
    LOG.info("going to send request to index user '{}' '{}'", user.getFirstName(), user.getLastName());

    HttpEntity<User> requestEntity = new HttpEntity<>(user);
    ListenableFuture<ResponseEntity<String>> listenableFuture = this.asyncIndexRestTemplate
            .postForEntity(this.searchServiceUrl + "/index", requestEntity, String.class);

    listenableFuture.addCallback(result -> {
        LOG.info("user '{}' '{}' was indexed and response status code was '{}'", user.getFirstName(),
                user.getLastName(), result.getStatusCode());
        successConsumer.accept(null);/*w w  w .  jav a 2  s  . c  om*/
    }, failureConsumer::accept);

}

From source file:org.mimacom.sample.integration.patterns.user.service.integration.AsyncSearchServiceIntegration.java

public void searchUserByFirstName(String firstName, Consumer<List<User>> successConsumer,
        Consumer<Throwable> failureConsumer) {
    ListenableFuture<ResponseEntity<User[]>> listenableFuture = this.asyncRestTemplate.getForEntity(
            this.searchServiceUrl + "/search-by-firstname?firstName={firstName}", User[].class, firstName);

    listenableFuture.addCallback(result -> successConsumer.accept(asList(result.getBody())),
            failureConsumer::accept);/*from w w w . j av  a2  s  .c  o  m*/

}

From source file:org.mimacom.sample.integration.patterns.user.service.integration.AsyncSearchServiceIntegration.java

public void indexUserSlow(User user, int waitTime, Consumer<Void> successConsumer,
        Consumer<Throwable> failureConsumer) {
    LOG.info("[SLOW!] going to send request to index user '{}' '{}'", user.getFirstName(), user.getLastName());

    HttpEntity<User> requestEntity = new HttpEntity<>(user);
    ListenableFuture<ResponseEntity<String>> listenableFuture = this.asyncRestTemplate.postForEntity(
            this.searchServiceUrl + "/index?waitTime={waitTime}", requestEntity, String.class, waitTime);

    listenableFuture.addCallback(result -> {
        LOG.info("[SLOW!] user '{}' '{}' was indexed and response status code was '{}'", user.getFirstName(),
                user.getLastName(), result.getStatusCode());
        successConsumer.accept(null);/*from w w  w .j  a va  2 s .co  m*/
    }, failureConsumer::accept);
}

From source file:org.mimacom.sample.integration.patterns.user.service.integration.BulkHeadedSearchServiceIntegration.java

public void searchUserByFirstName(String firstName, Consumer<List<User>> successConsumer,
        Consumer<Throwable> failureConsumer) {
    ListenableFuture<ResponseEntity<User[]>> listenableFuture = this.asyncSearchRestTemplate.getForEntity(
            this.searchServiceUrl + "/search-by-firstname?firstName={firstName}", User[].class, firstName);

    listenableFuture.addCallback(result -> successConsumer.accept(asList(result.getBody())),
            failureConsumer::accept);//from   w  ww .ja v a 2  s  .com

}

From source file:org.mimacom.sample.integration.patterns.user.service.integration.BulkHeadedSearchServiceIntegration.java

public void indexUserSlow(User user, int waitTime, Consumer<Void> successConsumer,
        Consumer<Throwable> failureConsumer) {
    LOG.info("[SLOW!] going to send request to index user '{}' '{}'", user.getFirstName(), user.getLastName());

    HttpEntity<User> requestEntity = new HttpEntity<>(user);
    ListenableFuture<ResponseEntity<String>> listenableFuture = this.asyncIndexRestTemplate.postForEntity(
            this.searchServiceUrl + "/index?waitTime={waitTime}", requestEntity, String.class, waitTime);

    listenableFuture.addCallback(result -> {
        LOG.info("[SLOW!] user '{}' '{}' was indexed and response status code was '{}'", user.getFirstName(),
                user.getLastName(), result.getStatusCode());
        successConsumer.accept(null);/*from www .j  av a  2 s. c  o  m*/
    }, failureConsumer::accept);
}