2015-10-05 85 views
0

我正在查閱文檔,但找不到任何信息。 我有一個HTTP請求,我可以輕鬆地從上下文中獲取用戶。從活動巴士獲取用戶

router.get("/politrons/users").handler(routingContext -> { 
     User user = routingContext.user(); 
     user.isAuthorised("read", res -> { 
      boolean hasPermission = res.result(); 
      if (hasPermission) { 
       mongo.find("users", new JsonObject(), getUsersAsyncResultHandler(routingContext)); 
      } else { 
       routingContext.fail(403); // Failed creation 
      } 
     }); 
    }); 

但我也使用事件總線進行其他交易。

   eb.consumer(FIND_USER_SERVER).handler(message -> { 
     eb.send(UserMongoWorker.MONGO_FIND_USER, message.body(), res -> { 
      message.reply(getResult(res)); 
     }); 
    }); 

我的問題是:如何從事件總線中獲取用戶?就像我從routingContext做的一樣?

回答

1

還沒有內置的支持。但是,您可以通過消息標頭傳播用戶和其他上下文數據。這樣你不需要修改你原來的消息體。像這樣。

Vertx.vertx().eventBus().send("Your address", "Your message", 
      new DeliveryOptions().addHeader("userId", "Your user ID") 
        .addHeader("userType", "GUEST").addHeader("username", "Sohan")); 

並抓住你的用戶這樣。

Vertx.vertx().eventBus().consumer("Your address", r -> { 
     final String userId = r.headers().get("userId"); 
    });