VertX Sync问题 - 不在光纤内调用的方法

时间:2017-11-30 14:36:08

标签: java synchronization vert.x

我似乎无法使VertX Sync正常工作。我只是没有从光纤内部调用'方法。每次例外

在我的垂直......

public class CVEVerticle extends SyncVerticle {

private MongoClient mongo;

@Override
@Suspendable
public void start(Future<Void> fut) {
    mongo = MongoClient.createShared(vertx, config());
    Router router = Router.router(vertx);
    router.get("/api/processStats").handler(Sync.fiberHandler(this::processStats));     


    vertx.createHttpServer().requestHandler(router::accept).listen(
        // Retrieve the port from the configuration, default to 8080.
        config().getInteger("http.port", 8084), result -> {
            if (result.succeeded()) {
                fut.complete();
            } else {
                fut.fail(result.cause());
            }
        });
}

@Suspendable
public void processStats(RoutingContext routingContext) {
     // do some stuff
     Sync.awaitResult(h -> process("test", h));
}

的pom.xml

    <dependency>
        <groupId>io.vertx</groupId>
        <artifactId>vertx-sync</artifactId>
        <version>3.5.0</version>
    </dependency>

不确定为什么它不起作用,我在启动胖罐时在-javaagent中传入了quasar-core jar。有什么想法吗?

欢呼声 马丁

1 个答案:

答案 0 :(得分:0)

您也可以在SyncVerticle.start(Future)方法中隐藏代码。改为覆盖SyncVerticle.start()

有关详细信息,请参阅Vertx-Sync documentation (SyncVerticle)