首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VertX3垂直部署:未触发CompletionHandler

VertX3垂直部署:未触发CompletionHandler
EN

Stack Overflow用户
提问于 2016-11-01 16:46:38
回答 1查看 385关注 0票数 1

当我运行以下代码时:

代码语言:javascript
复制
import io.vertx.core.*;
import io.vertx.core.eventbus.MessageConsumer;
import io.vertx.core.json.JsonObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

class TestVerticle extends AbstractVerticle {
    final Logger logger = LoggerFactory.getLogger(TestVerticle.class.getName());

    public static final String ADDRESS = "oot.test";

    public void start(Future<Void> startFuture) {
        logger.info("starting test verticle");
        MessageConsumer<JsonObject> consumer = vertx.eventBus().consumer(ADDRESS);
        consumer.handler(message -> {
            final JsonObject body = message.body();
            logger.info("received: " + body);
            JsonObject replyMessage = body.copy();
            replyMessage.put("status", "processed");
            message.reply(replyMessage);
        });
        logger.info("started test verticle");
    }
}
public class Scratchpad {
    private final static Logger logger = LoggerFactory.getLogger(Scratchpad.class);

    public static void main(String[] args) throws InterruptedException {
        Vertx vertx = Vertx.vertx();
        logger.info("deploying test verticle");
        Handler<AsyncResult<String>> completionHandler = result -> {
            System.out.println("done");
            if (result.succeeded()) {
                logger.info("deployment result: " + result.result());
            } else {
                logger.error("failed to deploy: " + result);
            }
        };
        TestVerticle testVerticle = new TestVerticle();
        vertx.deployVerticle(testVerticle, completionHandler);

        logger.info("deployment completed");
    }
}

我希望执行CompletionHandler内容,因此我应该将一些内容发送到stdout (至少“已完成”,尽管日志记录也应该正常工作),但什么也没有发生。所有其他日志信息都正确地显示在我的屏幕上。我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-03 14:56:24

之后:

代码语言:javascript
复制
logger.info("started test verticle");

添加:

代码语言:javascript
复制
startFuture.complete();

请参阅关于异步启动方法的文档的异步垂直线启动和停止部分。

该方法的此版本以未来作为参数。当方法返回时,将不考虑部署垂直线。 过了一段时间,当你做完所有你需要做的事情后(例如,开始其他眩晕),你就可以在未来(或失败)上打电话来表示你已经完成了。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40364628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档