2017-02-15 65 views
0
public class HelloWorldServer { 

    public static void main(final String[] args) { 
     Undertow server = Undertow.builder() 
       .addHttpListener(8080, "localhost") 
       .setHandler(new HttpHandler() { 
        @Override 
        public void handleRequest(final HttpServerExchange exchange) throws Exception { 
         exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "text/plain"); 
         exchange.getResponseSender().send("Hello World"); 
        } 
       }).build(); 
     server.start(); 
    } 
} 

這是hello世界應用程序使用的下游。 有人可以提供Undertow + CompletableFuture或RxJava的例子嗎?我搜索了但沒有成功。Undertow + CompletableFuture/RxJava

+0

什麼功能是你想實現什麼呢? – yosriz

+0

我想處理請求將查詢數據庫的內容,所以直到數據庫響應我想處理另一個請求 – Romper

+0

請在這裏查看我的答案,您需要了解如何從異步回調創建可觀察數據: http://stackoverflow.com/問題/ 42225722/rxjava-data-from-db-with-on-screen-list/42226534#42226534 – yosriz

回答

1

下面是暗流你好世界RxJava 2:

public static void main(final String[] args) { 
    Observable<HttpServerExchange> exchangeObservable = Observable.create(observableEmitter -> { 
     Undertow server = Undertow.builder() 
       .addHttpListener(8080, "localhost") 
       .setHandler(new HttpHandler() { 
        @Override 
        public void handleRequest(final HttpServerExchange exchange) throws Exception { 
         observableEmitter.onNext(exchange); 
        } 
       }).build(); 
     server.start(); 
     observableEmitter.setCancellable(() -> server.stop()); 
    }); 

    exchangeObservable.subscribe(exchange -> { 
     exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "text/plain"); 
     exchange.getResponseSender().send("Hello World"); 
    }); 
} 

這只是一個簡單的例子,在世界你好暗潮+ RxJava,這還沒有考慮到在其他的東西帳戶線程管理。我使用Observable.create()來包裝HttpHandler,它的回調爲Observable。此Observable表示您將消耗的傳入請求(exchangeObservable.subscribe()部分)處理請求的流程。

RxJava只會更改從回調的語法來觀察的模式,再加上提供了良好的運算符來對付他們:http://reactivex.io/documentation/operators.html

+0

謝謝。線程管理是什麼意思?你有一些例子嗎? – Romper

+1

您可以閱讀本主題http://reactivex.io/documentation/scheduler.html以及底部給出的鏈接。默認情況下,Observable不會實例化線程或使用任何並行機制。在使用RxJava Schedulers之前,先看看如何工作。通常web服務器爲你處理線程管理。 –

相關問題