问题标签 [vertx4]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Vert.x 将 http 重定向到 https
我们已经用 Vert.x 4 重新编写了我们的 web 服务,我们非常满意。在将它们投入生产之前,我们希望保护它们并且我们正在尝试启用 https。这是主要的垂直:
这是 HTTP 服务器 Verticle 代码中最相关的部分:
上面的代码可以正常工作,因为我的网站可以通过https://website.it和https://www.website.it访问 (使用letsencrypt 证书)。
问题是当我尝试访问http://website.it或http://www.website.it时它不起作用(这意味着我看不到主页,因为服务器无法访问)。
如何将http://website.it重定向到 https//website.it?
我用谷歌搜索了很多,我设法找到的是:
- 这个vertx 示例像我一样设置 HTTPS,但它没有提到重定向
- 这个SO question 似乎告诉我该怎么做,但我不明白该怎么做,我不确定该设置是否必须进入 HttpServerOption 对象
也许是我的 https 配置错误?我在 IntelliJ IDEA(Maven 构建)和 Vert.x 4 最新版本上使用 Java 11。谢谢
java - Vertx 用户授权主体或属性
我在我的 API 上使用 Vertx 框架来授权 JWT 令牌。在用户获得授权并解密令牌后,我想访问令牌的内容,特别是令牌中的“userId”字段。
最初我使用req
as访问它RoutingContext
:
req.user().principal().getString("userId");
这会按预期工作,直到它在不同的机器上编译。当在不同的机器上编译时,req.user().principal()
只包含字段access_token
,包含仍然加密的 JWT。
解决方案是通过以下方式访问用户 ID
req.user().attributes().getJsonObject("accessToken").getString("userId");
我已经在 4 台不同的机器上对此进行了测试。其中 2 个使用主体工作,另外 2 个需要属性。似乎只在乎它在哪台机器上编译,而不在乎它在什么机器上运行。机器之间没有更改代码。Java、Maven 和 Vertx 版本每次都相同。
我在网上找到的一些解决方案只是检查所需字段是否主要,如果不使用属性。不过,这似乎是一个糟糕的解决方法。必须有适当的方法来访问它。
访问解码令牌中的值的正确方法是什么?为什么它似乎会根据编译机而改变?
vert.x - Vert.x——如何使用 Future 并行执行任务/方法
我是 Vert.x 异步编程的新手。我想知道如何使用期货并行运行多个任务。(与使用 Java 的 callable 类似)。
以下是我所拥有的,但任务是按顺序执行的。我错过了什么?
vert.x - vert.x zipkin 集成是否提供采样支持?
用例:
使用 vert.x 应用程序作为所有传入流量的 API 网关。想要通过 vert.x 对传入的请求进行采样
ZipkinTracingOptions 中的采样选项被硬编码为 Sampler.ALWAYS_SAMPLE 我觉得,我们应该为应用程序提供从外部提供采样器的能力,以便 Brave 支持的所有采样选项都可以在 ZipkinTracingOptions 中使用
vert.x 是否支持任何其他采样选项,或者它是否打算在未来这样做?
java - 为什么 Vert.x codegen 无法创建 rx-fied 类?
出于某种原因,我的基于 4.0.2 的代码不会使用 codegen 生成 rx-fied 服务版本。
虽然 VertxEBProxy 和 VertxProxyHandler 类都是按预期创建的。
这是一个演示项目:https ://github.com/ashertarno/playground
请参阅下面的所需依赖项:
在这种情况下会缺少什么?
vert.x - vertx 中的 ScheduledExecutorService.scheduleWithFixedDelay 用法
我想安排一个在 task完成后定期执行的任务。以前我使用过ScheduledExecutorService.scheduleWithFixedDelay
,但现在在 vertx 中我正在考虑它是否会导致任何问题,因为 vertx 已经将线程用于事件循环和工作线程。
我检查了Vertx.setPeriodic
,但这只是定期执行,没有检查或等待任务完成,然后再安排其他任务。
通过目前探索的所有选项,我有一个解决方法,Vertx.setTimer
用于安排任务,完成后我在处理程序中再次调用 Vertx.setTimer。
在高层次上,调度任务将从一张表中查询记录并更新另一张表。
谁有其他更好的解决方案,请指导我。
Vertx 版本 - 3.9.4
sockets - Java Vertx NetClient NetServer 通信非常慢
我之前在 vertx 上编写了一个小系统,但直到现在才测试过 NetServer 和 NetClients 之间的通信。
即使我在本地编写了一个非常简单的程序,从 NetServer 向 NetClient 发送一条非常小的消息也需要 50-100ms。如果我删除了选项,情况会变得更糟。下面的例子。
与简单 Java ServerSocket/Socket 相同的测试情况以 0 毫秒的时间结束。
我阅读了大部分 vertx 文档,但没有发现任何提示我在这里遗漏的内容。
亲切的问候
vert.x - 集群顶点的多个或单个实例
我正在使用 vertx4 开发微服务,每个服务由多个 verticles 组成,并且使用以下代码将所有服务都部署为 clustered(hazelcast) verticles。
我为服务中的每个顶点调用上面的代码,并创建了多个顶点对象或实例。
- 在集群中部署verticles的正确方法是什么?
- 我应该从 clusteredVertx 获取一个顶点对象并使用它部署多个顶点吗?
- 拥有多个 vertx 实例的优点和缺点是什么?
我已经阅读了 vertx 文档,但我无法特别理解集群。我什至检查了一些 vertx 源代码,例如Launcher
类,但没有任何帮助我得到答案。
vert.x - vertx 4.0.3 中的请求参数验证
我vertx-Web-api-contracts
在 vertx 3.0 中使用来验证我的查询参数和表单参数
HTTPRequestValidationHandler
和ParameterTypeValidator
代码示例:
在这里,我使用 ParameterTypeValidator 提供自定义逻辑来验证我的参数值。我正在使用 customTypeValidator,因为我需要对 ex 的参数值进行自定义值验证。我需要验证我的 ID 参数应该包含由_分隔的四个部分(part1_part2_part3_part4)
现在,当我尝试迁移到vertx 4.0
并被vertx-Web-api-contracts
弃用时,我被迫使用vertx-web-validation
,但是 web-validation 缺少像 api-contract-validations 这样的 custompropertyvalidation。
我想怎么做,
但我想知道如何传递/构建自定义模式,而不是使用自定义逻辑进行验证stringSchema()
。intSchema()
早些时候我正在创建自定义类并实现 ParameterTypeValidator 以提供自定义验证逻辑(如IdTypeValidator()
)。
有什么方法可以通过网络验证实现相同的目标。
java - 什么是 Vert.x 垂直“实例”,它们与线程有什么关系?
在 Vert.x 应用程序中部署 Verticle 时,文档似乎非常不清楚 Verticle“实例”实际上是什么,以及它与线程和线程池的关系。事实上,与实际线程模型相关的任何事情都不清楚......
从文档中;
Vert.x 在这里的工作方式不同。每个 Vertx 实例都维护多个事件循环,而不是单个事件循环。默认情况下,我们根据机器上可用内核的数量来选择数字,但这可以被覆盖。
也来自文档;
要在 Vert.x 服务器中实例化的 Verticle 实例数。每个 Verticle 实例都是严格的单线程的,因此要跨可用内核扩展您的应用程序,您可能需要部署多个实例。如果省略,将部署单个实例。我们稍后将在本用户手册中详细讨论缩放。
假设我想部署一个简单的 REST API,它被编写为单个 Verticle,并且我想让它在可用的 CPU 内核上有效地扩展。我应该怎么办?
- 我是否为每个 CPU 核心部署一个 Verticle 实例?
- 我是否部署了单个垂直实例,至少根据文档的一部分,单个垂直实例已经维护了多个事件循环(因为我假设 1 个事件循环 = 1 个线程)?
- 如果我部署 4 个 Verticle 实例,实际会创建/使用哪些线程和/或线程池?