我正在使用vert.x 2.1.5版本。我试图在我的项目中使用事件循环。示例代码如下所示
{{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());
}
});
}
请注意,回复位于处理程序正文中,并且发件人必须在访问之前检查响应是否成功。