@Override
  public void run() throws Exception {
    HttpRequest request = HttpRequest.newBuilder().uri(SERVICE_URI + "testAsync/stream").build();
    AsyncHttpClient<ByteBuffer> client =
        AsyncHttpClientBuilder.withApacheAsyncClient().buildClient();
    try {
      Future<HttpResponse> response =
          client.execute(
              request,
              new SSEDecoder(),
              new ResponseCallback<HttpResponse, String>() {
                @Override
                public void completed(HttpResponse response) {}

                @Override
                public void failed(Throwable e) {
                  e.printStackTrace();
                }

                @Override
                public void contentReceived(String element) {
                  System.out.println("Get content from server: " + element);
                }

                @Override
                public void cancelled() {}

                @Override
                public void responseReceived(HttpResponse response) {}
              });
      response.get().close();
    } finally {
      client.close();
    }
  }
 @Override
 public void run() throws Exception {
   HttpRequest request = HttpRequest.newBuilder().uri(SERVICE_URI + "testAsync/stream").build();
   ObservableAsyncClient<HttpRequest, HttpResponse, ByteBuffer> observableClient =
       AsyncHttpClientBuilder.withApacheAsyncClient().observableClient();
   final AtomicReference<HttpResponse> httpResponse = new AtomicReference<HttpResponse>();
   final AtomicInteger counter = new AtomicInteger();
   try {
     observableClient
         .stream(request, new SSEDecoder())
         .toBlockingObservable()
         .forEach(
             new Action1<StreamEvent<HttpResponse, String>>() {
               @Override
               public void call(final StreamEvent<HttpResponse, String> t1) {
                 System.out.println("Content from server: " + t1.getEvent());
                 counter.incrementAndGet();
                 httpResponse.set(t1.getResponse());
               }
             });
   } finally {
     httpResponse.get().close();
     observableClient.close();
     System.out.println("\nTotal event received: " + counter.get());
   }
 }