我(newby)正在努力确定将以下http方法的功能合并到vert.x“ start()”方法中...
(来自:https://www.programcreek.com/java-api-examples/index.php?api=io.vertx.core.streams.Pump)
Example 22
Project: vertx-reactive-streams File: ReactiveStreamsExamples.java View source code 3 votes vote downvote up
public void example2(Vertx vertx,HttpServerRequest request,Subscriber<Buffer> otherSubscriber) {
ReactiveWriteStream<Buffer> rws = ReactiveWriteStream.writeStream(vertx);
// Subscribe the other subscriber to the write stream
rws.subscribe(otherSubscriber);
// Pump the http request to the write stream
Pump pump = Pump.pump(request,rws);
pump.start();
}
注意:为了进行比较,此简单的“ start()”方法(如下)适用:
public class Server extends AbstractVerticle {
public void start(Promise<Void> promise) {
vertx.createHttpServer().requestHandler(new Handler<HttpServerRequest>() {
public void handle(HttpServerRequest request) {
request.response()
.putHeader("content-type","text/plain")
.end("Server.java: Hello from Vert.x!");
}
}).listen( // }).listen(8080);
config().getInteger("http.port",8082),//8082 is default if nothing found in configuration...
result -> {
if (result.succeeded()) {
promise.complete();
} else {
promise.fail(result.cause());
}
}
);
}
}
当我尝试以下操作时,编译当然会失败,并显示:“找不到符号:变量otherSubscriber”:
(不确定如何引入“ otherSubscriber”参数-还是这样做是否正确)
public void start(Promise<Void> promise) {
vertx.createHttpServer().requestHandler(new Handler<HttpServerRequest>() {
//public void handle(HttpServerRequest request) {
//...modified...
public void handle(HttpServerRequest request,Subscriber<Buffer> otherSubscriber) {
//...added...
ReactiveWriteStream<Buffer> rws = ReactiveWriteStream.writeStream(vertx);
rws.subscribe(otherSubscriber); // Subscribe the other subscriber to the write stream
Pump pump = Pump.pump(request,rws); // Pump the http request to the write stream
pump.start();
request.response()
.putHeader("content-type","text/plain")
.end("Server.java: Hello from Vert.x!");
}
}).listen( // }).listen(8080);
config().getInteger("http.port",//8082 is default if nothing found in configuration...
result -> {
if (result.succeeded()) {
promise.complete();
} else {
promise.fail(result.cause());
}
}
);
}
* ...非常感谢您的帮助。到目前为止,还没有找到执行此操作的示例。 另外,如果这是对vert.x“ start()”方法的误解和/或滥用,请告诉我。 -thx *