我正在查看文档,但我找不到任何信息。 我有一个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中做的那样?
答案 0 :(得分: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");
});