问题标签 [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.

0 投票
1 回答
114 浏览

java - 如何使用 vert.x 对工人 Verticle 应用并发处理

Vert.x 文档提到这一点:默认情况下,worker verticle 实例在任何时候都只会由一个线程执行(它不是并发的)。

所以这意味着如果我有 20 个实例的 Verticle,例如:

我将无法同时处理请求?

我怎么能并发这个处理?我看到 Multi-threaded worker verticles 可以是一个选项,但 Vert.x 文档提到要避免使用此选项。

0 投票
0 回答
638 浏览

reactive-programming - 运行多个实例时的 VertX eventbus.publish

我开始意识到 VertX 会将其事件总线发布 (eventbus.publish) 扇出到所有订阅的所有 verticle 实例。但是,如果我将 eventbus.send 用于特定地址,则该消息将被传递到目标 Verticle 的单个实例。我的要求是能够发布消息并将其传递到所有订阅者 Verticle 的单个实例

简单地说,发布一条消息并确保它被所有订阅者接收,但只有一个给定订阅者的实例。

我可以构建中间组件来处理这个问题,但我正在寻找更多开箱即用的选项来解决这个问题。

PS我在集群模式下也试过这个,每个verticle有一个docker,结果是一样的。

0 投票
1 回答
824 浏览

java - vert.x eventloop 从 eventbus 消耗很慢

我们正在轮询来自 kafka 的消息(使用 Executor Thread)并将其放在 vert.x 事件总线上。最终,verticles(non-workers) 使用来自 eventbus 的这些消息。

我们测量了每条消息从 vertx eventbus 发送到它之后所花费的时间在峰值时可以达到 4 秒。

由于某种原因,有时事件总线需要很长时间才能使用消息但没有显示线程块错误,因此我们无法判断是什么延迟了它

奇怪的是我们没有看到任何事件循环块警告。我们还能做什么?cpu/ram 都很好。唯一可以实际显示的指标是:

在此处输入图像描述

但它没有告诉我们任何事情(不知道事件总线处理程序如何与事件循环延迟相关联)

我们应该检查什么来了解是什么让我们从 vert.x 事件总线的事件循环消耗变慢?

0 投票
1 回答
39 浏览

vert.x - VertX AMQP Bridge 中发布者的收据确认

如何在 VertX AMQP Bridge 中接收发布者的确认,以确认 solace VMR 服务器上的消息接收。

0 投票
1 回答
5121 浏览

java - 如何使用 Hibernate 作为 Vert.x 的非阻塞 ORM

我目前有一个Vert.x代码库。我使用的是 Golang,但 Golang 有点糟糕,并且没有好的 ORM。但显然,Vert.x 也没有好的 ORM,主要是因为 Vert.x 是非阻塞的,而且大多数 Java 的 ORM 都是基于阻塞 API。

无论如何,我有一个具体的问题——我读到 Hibernate/JPA 可以与 Vert.x 一起使用——我们可以做的是将 Hibernate 调用放在不同的 Verticle 中,然后它将是非阻塞的。

这是一个好主意吗?有人可以展示一个使用 2 个不同的 Vert.x verticles 的例子吗?

如果这不是一个好主意,那么可以使用什么好的 ORM?裸 SQL 调用起初听起来很酷,但对于迁移和其他东西,可能会有点疯狂。

0 投票
2 回答
97 浏览

cluster-computing - 如何在hazelcast的verticles集群中实现保持活动

我有一些属于同一个集群的verticles,它们通过事件总线发送一个hello消息——消息基本上是发送verticle的名称——到一个将消息存储在地图中的接收者verticle。

我想实现一个保持活动状态的方法,所以如果我杀死其中一个发送者,它发送给接收者的消息将从接收者的地图中删除。

我查看了 hazelcast 网站,但没有找到实现该功能的简单方法。

预期的结果是当发送者的verticle被停止/杀死时,发送者的记录从接收者的地图中删除。

0 投票
1 回答
1938 浏览

vert.x - 如何使用 Vert.x 捕获异步代码中的错误

使用 Node.js,我们可能会使用域来捕获异步代码中抛出的错误,如下所示: https ://medium.com/@the1mills/using-node-js-domains-in-production-797105a4c302

以这种方式使用域允许我们将错误固定到特定请求,以便我们可以发送响应并进行清理,并允许我们的服务继续运行。

使用 Golang,我们可以使用这样的错误处理中间件来捕获错误并将其固定到特定请求。

您可能已经知道,错误中间件只是在调用任何其他 api 路由之前注册,如果发生恐慌,延迟将捕获它。我不确定它是否适用于“子 goroutines”,但它适用于当前正在运行的 goroutine。

所以我的问题是 - 在使用 Vertx 时 - 如果一个请求导致错误,我们如何防止我们的进程崩溃?理想情况下,我们可以只记录错误,并针对该请求发送响应并继续运行。

0 投票
1 回答
698 浏览

vert.x - Vertx 类中 init() 的目的和行为

我有以下用于测试目的的verticle:

是从主verticle部署的

这段代码工作正常。

我查看了Verticle文档,发现了一个init()我以前没有见过的回调方法。由于文档没有详细说明它的实际作用,我对其进行了定义,以查看它在 Verticle 的生命周期中的哪个位置被调用。

但是,当init()定义时java.lang.NullPointerException,我在调用的行上JsonObject cnf = config();得到一个start()

我的问题是:

Q1:有什么线索为什么NullPointerException会被抛出?

Q2:目的是init()什么?它是 Vertx 内部的还是可以由客户端代码实现,例如,在部署配置中传递的 Verticle 对象中定义一些字段?

0 投票
1 回答
1405 浏览

java - vertx 中的 MDC 日志记录

我打算在使用 vertx 框架的其余应用程序中使用 slf4j MDC。我在某处读到你不应该在 vertx 中使用 MDC,因为 MDC 是线程特定的,而 vertx 是线程不可知的。但是我在从一个verticles调用的服务开始时设置MDC变量,最后调用MDC.clear()。你看到这有什么问题吗。我认为它将在一个线程内 - 一个 Verticle 的端到端事件处理。

0 投票
1 回答
337 浏览

java - 如何编写 Vertx worker verticle - 无限期阻塞操作?

下面的课程是我的工人 Verticle,我想在名为 events-config 的通道上从事件总线接收消息时执行阻塞代码。

目标是无限期地生成和发布 json 消息,直到我在 events-config 通道上收到停止操作消息。

我正在使用 executeBlocking 来实现所需的功能。然而,由于我无限期地运行阻塞操作,vertx 阻塞了线程检查器转储警告。

问题:
- 有没有办法只为特定的verticle禁用blockedthreadchecker??
- 下面的代码是否遵循在 vertx 中根据需要执行无限循环的最佳实践?如果不能,你能建议最好的方法吗?