【问题标题】:Are there Application Variables in Vertx?Vertx 中有应用程序变量吗?
【发布时间】:2018-04-18 05:24:40
【问题描述】:

我希望在应用程序范围变量中设置自定义对象,以便 vertx 可以在所有微服务请求中访问它。我在 Vertx 文档中找不到任何内容。在 Java EE Servlet 中,类似功能的代码是

getServletContext().getAttribute("application_data")
getServletContext().setAttribute("application_data", data);

【问题讨论】:

  • 你想在哪里/如何使用这个值?
  • 我在使用下面的代码调用任何路由之前检查 apipermissions。由于 OAuth2 注销/撤销的问题,我需要保留一个 accesstoken->refreshtoken 的映射,我想将其保存在内存中并从中读取,而不是存储在数据库中。 apiRouter.post("/api/v1/*").handler(AuthHandlers::checkAPIPermissions);

标签: java microservices vert.x


【解决方案1】:

对于全局数据,您应该简单地使用共享数据。这具有可跨集群访问的额外好处。

以下代码使用本地地图:

SharedData sd = vertx.sharedData();
LocalMap<String, String> map1 = sd.getLocalMap("mymap1");
map1.put("foo", "bar");

阅读同样简单:

String val = map1.get("foo");

文档是on this page

【讨论】:

  • 感谢您的回答。如果应用程序扩展到多个节点,您是否愿意在场景中使用异步共享地图?
  • 最终,是的,我愿意。但如果这是一个单服务器应用程序,这应该没问题。
猜你喜欢
  • 2021-12-08
  • 1970-01-01
  • 2020-02-23
  • 2016-12-24
  • 2013-02-24
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多