如何使用ReactiveWriteStream通过http调用演示vert.x Start方法?

我(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 *

chendodo2009 回答:如何使用ReactiveWriteStream通过http调用演示vert.x Start方法?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3106696.html

大家都在问