gpt4 book ai didi

java - 如何使用 Vert.x 从 EventBus 中获取结果

转载 作者:行者123 更新时间:2023-12-02 02:08:41 25 4
gpt4 key购买 nike

伙计们!

在使用 Vert.x 时,我发现在与其他 Verticle 通信时无法从 EventBus 中获取结果。

class Result<T> {
public T value;
public String message;
// ...
}

private Result<Integer> someMethod() {
try {
var json = new JsonObject();
vertx.eventBus().<JsonObject>send(Service.EVENT_BUS_ADDRESS, json, ar -> {
if (ar.succeeded()) {
var result = new Result<List>(ar.result().body());
if (result.isSuccessful()) {
Result.succeed(result);
} else {
Result.fail(result.message);
}
} else {
Result.fail("Remote server error");
}
});
} catch (Exception e) {
e.printStackTrace();
return Result.fail(e.getMessage());
}
return // how can I return the result in EventBus???
}

那么如何从 Async block 中获取值并返回它?

最佳答案

您不应该返回结果,而应该通知处理程序

以下代码假设您的 Result.succeeeedResult.fail 方法返回Result 的实例

private void someMethod(Handler<Result> resultHandler) {
...
vertx.eventBus().<JsonObject>send(Service.EVENT_BUS_ADDRESS, json, ar -> {
if (ar.succeeded()) {
var result = new Result<List>(ar.result().body());
if (result.isSuccessful()) {
resultHandler.handle(Result.succeed(result));
} else {
resultHandler.handle(Result.fail(result.message));
}
} else {
resultHandler.handle(Result.fail("Remote server error"));
}
...
}

关于java - 如何使用 Vert.x 从 EventBus 中获取结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50334261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com