3 回答

TA貢獻1898條經(jīng)驗 獲得超8個贊
用 CompleteFuture
private String sendCommand(String address, String command) {
CompletableFuture<String> completableFuture = new CompletableFuture<>();
vertx.eventBus().<String>send(address, command, asyncResult -> {
if (asyncResult.succeeded()) {
completableFuture.complete(asyncResult.result().body());
} else {
completableFuture.completeExceptionally(asyncResult.cause());
}
});
try {
return completableFuture.get();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
請確保此代碼不會在 Vert.x 事件循環(huán)上調(diào)用,因為get()在知道答復之前會阻塞。

TA貢獻1936條經(jīng)驗 獲得超7個贊
的EventBus
是為異步消息傳遞(發(fā)布/訂閱消息,點對點和請求響應消息)制成。強制同步動作沒有意義。
如果您想要同步響應,如果您在同一個 JVM 中,只需調(diào)用另一個 java 類中的方法。

TA貢獻2011條經(jīng)驗 獲得超2個贊
添加回答
舉報