Vert.x事件使用单线程循环

时间:2016-07-21 06:58:32

标签: java multithreading vert.x single-threaded

我正在使用vert.x 2.1.5版本。我试图在我的项目中使用事件循环。示例代码如下所示

{{1}}

在此代码中,我的事件总线在执行事件循环之前返回值。 我需要根据事件循环输出填充我的输出 我怎样才能实现

1 个答案:

答案 0 :(得分:0)

基本上,问题在于您没有等待邮件到达。 为了让我的例子更清楚,我删除了大部分Json逻辑。

Vertx vertx = Vertx.vertx();
int messages = 10;

// First register your consumer
MessageConsumer<JsonObject> consumer = vertx.eventBus().consumer("event1");
consumer.handler(o -> {
    System.out.println("Got message" + o.body());

    // Consumer replies to sender with the same message
    o.reply(o.body());
});

// Now send your messages
for (int i=0;i<messages;i++) {
    JsonObject data = new JsonObject();
    data.put("value", i);

    vertx.eventBus().send("event1", data, response -> {
        if (response.succeeded()) {
            // Each time consumer replies, print it
            System.out.println("Consumer replied: " + response.result().body());
        }
    });
}

请注意,回复位于处理程序正文中,并且发件人必须在访问之前检查响应是否成功。