我的请求处理程序
router.route("/clientController/*").handler(sockJSHandler);
我的活动巴士是
eb.consumer("chat.to.server",message->{
System.out.println("Getting Request in Client Controller Event Bus");
JsonObject data = (JsonObject) message.body();
String classifier = data.getString("classifier");
if(classifier.equals("loginUri")) {
System.out.println("Request for Login URI");
vertx.executeBlocking(future -> {
future.complete(OAuth.getOAuthParam());
}, res -> {
eb.publish("chat.to.client", res.result());
});
}
是否可以访问事件总线内的会话对象,因为我们执行正常的路由处理程序,如routingContext.getSession()
答案 0 :(得分:1)
简短的回答,你不能。路由上下文会话与eventbus无关。可以在没有HTTP服务器的情况下部署eventbus,而路由上下文是特定于Web的事物。
如果您需要在事件总线上拥有状态,那么我会说您需要在消息头中传递会话ID,并且只有在会话是群集的时候,您才可以通过id从群集存储中检索它。通过这样做,您可能也会引入不一致性,所以我建议不要这样做。
备选方案只需将所有必需的会话数据放入消息有效负载中。