问题标签 [vertx-verticle]
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.
vert.x - 即使工作线程可用,Vertx Http Webclient 请求也会挂起
我有一个程序,我在其中部署了一个 worker verticle(vertx 版本 3.6.3)。从这里,工人 Verticle,我正在使用 Vertx WebClient 库发出 HTTP 请求。我的 vertx 工作池大小为 20,事件循环池大小为 10。之后,发出 http 请求(在 send() 调用之后),我阻塞了使用可完成未来发出 HTTP 请求(工作线程)的工作线程。当我阻塞工作线程时,HTTP 请求永远不会响应并且总是超时。当工作线程没有被阻塞时它会响应。我想,如果我阻塞了工作线程,池中还有其他工作线程来处理 HTTP 请求。我在这里做错了什么?此外,我启用了网络日志活动,但我没有看到任何网络日志打印在日志中。
以下是我尝试过的程序,我正在运行一个示例 HTTP 服务器,该服务器在 localhost 的 8080 端口上运行,响应良好。
vert.x - 在 vertx-web 背压示例中,为什么删除 observeOn 会增加延迟?
在vertx-web 背压示例observeOn(RxHelper.scheduler(vertx.getDelegate()))
中,假设我将 Server Verticle 作为标准 Verticle 启动,会做什么。
我在 8 核机器上部署了 8 个事件循环线程和 8 个 Server verticle 实例我没有在路由的处理程序中阻塞 IO 调用
microservices - 我什么时候想创建多个 Verticle(假设我在无状态微服务中使用非阻塞数据库客户端)?
假设
- 我正在构建一个无状态微服务,它公开了一些简单的 API 端点(例如,一个通读缓存,将一个条目保存到数据库),
- 我正在使用非阻塞数据库客户端,例如mysql或redis和
- 我总是希望我的微服务通过 HTTP 相互通信(通过将 EC2 实例放在负载均衡器后面)
问题
- 我什么时候要使用超过 1 个标准 Verticle(即,将整个微服务编写为单个 Verticle 并部署它的 n 个实例(n = 事件循环线程数))?添加更多的verticles不会增加序列化和上下文切换的成本吗?
- 假设我将微服务拆分为多个标准 Verticle(无论出于何种原因)。与部署不同比例的实例相比,部署每个实例的 n(n = 事件循环线程数)不会总是提供更好的性能。由于每个 Verticle 只是一个地址上的侦听器,这意味着每个事件循环线程都可以处理各种消息,并且它们已经是负载平衡的。
- 我什么时候想在集群模式下运行我的应用程序?根据文档,我觉得集群模式只有在您有多个 Verticle 时才有意义,并且当您有一个实际的集群用例时也是如此,例如,不同的 EC2 实例处理不同用户的请求以帮助处理数据局部性(比如使用点燃)
PS,即使您可以回答上述问题之一,也请提供帮助。
vert.x - 如果处理程序中有要模拟的对象,则对 vertx 响应处理程序进行单元测试
示例响应处理程序:
我们如何通过在处理程序中模拟对象来对上述处理程序进行单元测试?
java - 在 Vert.x 3.9 中使用 Thymeleaf TemplateEngine
我是 Vertx 的新手。我正在尝试在我的应用程序中创建 thymeleaf 模板引擎,但它会引发此错误
java:不兼容的类型:io.vertx.core.Vertx 无法转换为 io.vertx.reactivex.core.Vertx
如果我投到然后我vertx
得到io.vertx.reactive.core.Vertx
这个错误
java.lang.ClassCastException:io.vertx.core.impl.VertxImpl 不能转换为 io.vertx.reactivex.core.Vertx
除了那个数据库连接是成功的,如果我删除 TemplateEngine 行代码运行顺利。
如果您知道如何解决,请指导我。谢谢
vert.x - 在 Vert.x 中,为什么 DEFAULT_EVENT_LOOP_POOL_SIZE = 2 * no。核心?
默认情况下,Vert.x 似乎最多创建2 * NUM_OF_CORES 个事件循环线程。这似乎是一个相当古老的变化(7年以上)
在具有 4 个物理内核(具有超线程的 8 个逻辑内核)的机器上,它创建了 16 个事件循环线程。
NUM_OF_CORES(即上面示例中的 8 个)事件循环线程数不应该是理想的吗?
我能找到的唯一解释来自 Tim Fox(vertx 的原作者):
默认情况下,我们使用 2 * 数量的内核 - 实际上,这会产生更好的结果,因为操作系统并不总是在内核之间均匀分布线程。
但是当我使用 8 而不是 16 时,我做的一些负载测试给出了更好的结果。所以想了解在什么条件下默认应该给出更好的结果?
vert.x - 如何从 VertX Future 对象中获取值
我无法从 Future 对象中检索值。下面是代码供参考
这是 getLatestVersion(request) 的实现
在 SOP 中,我可以从result.result()
和获取值result.result().getVersion()
,但是在将此方法的结果返回给上述调用者后,我无法获取这些值。
我想在这里实现的是我需要Configure
从Future<Configure>
.
java - 如何修复 io.vertx.core.impl.NoStackTraceThrowable?
所以我正在为java制作一个vertx verticle,当我在intellij中运行它时它似乎开始了,但是当我制作一个shadowjar并在我的ubuntu服务器上启动它时,我得到了这个:
它以前可以正常工作,但我无法弄清楚这是什么意思。几周前我一直在使用shadowjar来部署它,它在intellij中没有给出任何错误,这个错误给出了零信息......
java - Vertx 服务代理编译错误无法解析为类型
我正在使用 vertx 服务代理。当我尝试添加所有必需的依赖项和 package-info java 文件时。我仍然得到 vertx 编译错误无法解析为类型。从教程中我了解到它是一个生成的文件,但它不会生成。
pom.xml 如下:
数据库服务接口如下:
包信息如下:
microservices - vertx multi verticle在单个微服务中的用例是什么?
在大多数 Web 应用程序中,应用程序都构建在 vertx 中,我已经看到人们在单个微服务中创建了两个 verticles。
- 一种是用于处理 HTTP 请求的 rest verticle。
- 另一种是通过dao verticle 与数据库进行通信。
每当有任何 api 请求时,HTTP verticle 通过事件总线与 dao verticle 进行通信。
但是考虑到顶点是单线程的,在这里创建两个不同的顶点有什么好处。事件总线上的通信会产生不必要的开销,而我只能创建一个处理 rest 和 i/o 的 Verticle。
我可以理解在阻塞调用的情况下有一个单独的工人 Verticle 的情况。但是在非阻塞的情况下,i/o调用的用例是什么呢?