从事件总线获取用户



我正在查找文档,但我找不到任何信息。我有一个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?

目前还没有内置支持。但是您可以通过消息头传播用户和其他上下文数据。这样就不需要修改原始消息体。就像这样。

    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");
    });

最新更新