第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Vertx 中發(fā)送的同步 EventBus 消息

Vertx 中發(fā)送的同步 EventBus 消息

躍然一笑 2021-09-12 20:38:47
我想通過 Vertx 中的 EventBus 但同步發(fā)送多條消息。我想發(fā)送一條消息,等待它,然后發(fā)送下一條消息。地址是一樣的。默認情況下我是怎么做的?或者有必要使用,也許,一個 executeBlocking 代碼?這是我的代碼。public class EventBusSync {    private Vertx vertx = Vertx.vertx();    private static final String SERVICE_ADDRESS =  "service.worker";  public void sentViaEvBus() {    String message1 = "message1";    String message2 = "message2";    String reply1 = sendCommand(SERVICE_ADDRESS,message1);    String reply2 = sendCommand(SERVICE_ADDRESS,message2);  }  private String sendCommand(String address, String command) {   String message;   vertx.eventBus().send(address,command, handler -> {    if(handler.succeeded()) {     log.info("success");   } else {     log.error("error",handler.cause());     throw new RuntimeException("ERROR");    }    message = handler.result.body();    }); return message;  } }所以在這里,如果它發(fā)送了第一個命令并且正在發(fā)生某些事情,我想中斷下一個 eventbus 發(fā)送。
查看完整描述

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()在知道答復之前會阻塞。


查看完整回答
反對 回復 2021-09-12
?
LEATH

TA貢獻1936條經(jīng)驗 獲得超7個贊

EventBus是為異步消息傳遞(發(fā)布/訂閱消息,點對點和請求響應消息)制成。強制同步動作沒有意義。

如果您想要同步響應,如果您在同一個 JVM 中,只需調(diào)用另一個 java 類中的方法。


查看完整回答
反對 回復 2021-09-12
?
森林海

TA貢獻2011條經(jīng)驗 獲得超2個贊

Vert.x-sync 示例

在這里,您將找到演示 Vert.x-Sync 實際應用的示例。

[...]

這演示了使用 awaitResult 來同步發(fā)送事件總線消息并獲取回復。


查看完整回答
反對 回復 2021-09-12
  • 3 回答
  • 0 關注
  • 475 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號