2015-10-05 33 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"); 
    });