暗流 + CompletableFuture/RxJava
Undertow + CompletableFuture/RxJava
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();
}
}
是使用undertow的hello world应用。
有人可以提供 Undertow + CompletableFuture 或 RxJava 的示例吗?我已经搜索过但没有成功。
这里是 RxJava 2 的 undertow hello world:
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");
});
}
这只是一个简单的例子,hello world Undertow + RxJava,它没有考虑线程管理等等。我使用 Observable.create()
来包装 HttpHandler
并且它是对 Observable
的回调。此 Observable
表示您将使用(exchangeObservable.subscribe()
部分)来处理请求的传入请求流。
RxJava 只会将语法从回调更改为可观察模式,并提供一组很好的运算符来处理它们:http://reactivex.io/documentation/operators.html
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();
}
}
是使用undertow的hello world应用。 有人可以提供 Undertow + CompletableFuture 或 RxJava 的示例吗?我已经搜索过但没有成功。
这里是 RxJava 2 的 undertow hello world:
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");
});
}
这只是一个简单的例子,hello world Undertow + RxJava,它没有考虑线程管理等等。我使用 Observable.create()
来包装 HttpHandler
并且它是对 Observable
的回调。此 Observable
表示您将使用(exchangeObservable.subscribe()
部分)来处理请求的传入请求流。
RxJava 只会将语法从回调更改为可观察模式,并提供一组很好的运算符来处理它们:http://reactivex.io/documentation/operators.html