gpt4 book ai didi

java - Undertow + CompletableFuture/RxJava

转载 作者:行者123 更新时间:2023-12-02 03:02:34 25 4
gpt4 key购买 nike

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

关于java - Undertow + CompletableFuture/RxJava,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42245193/

25 4 0