问题标签 [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 回答
223 浏览

gradle - 垂直x。如何在具有多个模块的项目中启用自动重新部署?

我们如何在使用时为多个模块启用自动重新部署Vert.x

例如,如果我们有这样的结构:

其中main模块是用 Java 编写的,而kotlin模块是用 Kotlin 编写的。

我们settings.gradle可以有类似的东西:

可以有类似的main/build.gradle东西:

我们如何正确配置我们的项目,以便当我们更改模块mainkotlin模块中的某些文件时重新部署垂直?

0 投票
1 回答
2583 浏览

vert.x - 使用 Vert.x 事件总线时没有地址“演示”的处理程序

我正在做一个关于如何使用 Vert.x 事件总线的演示。但是,消息不会发送给消费者。我得到的只是

没有地址 hello 的处理程序

当我调用服务时,这是消费者,这是我正在遵循的确切示例,以及我是如何运行它的。

我运行带有集群标志的verticle,如示例中所述,

mvn compile vertx:run -Dvertx.runArgs="-cluster -Djava.net.preferIPv4Stack=true

下面是第一个verticle的日志

这是向消费者发送一些消息的第二个 Verticle,它是一个在本地单独运行的不同项目。

我正在使用以下命令运行。

mvn compile vertx:run -Dvertx.runArgs="-cluster -Djava.net.preferIPv4Stack=true"

尝试在http://localhost:8082/上调用应用程序,我仍然得到 No handlers for address hello

我已经尝试过了,但是我已经添加了集群标志并且它不起作用。谢谢。

下面是我在两种服务中使用的 jgroups.xml 作为评论的回复,仍然非常感谢任何帮助。它在我的资源文件夹中

0 投票
2 回答
363 浏览

kotlin - vert.x 关于网络服务器的概念?

我不太明白 vert.x 是如何应用于网络服务器的。

我所知道的网络服务器概念是基于线程的。

  1. 您启动您的网络服务器,然后它正在运行。
  2. 然后对于每个连接的客户端,您都会获得一个套接字,然后将其传递给它自己的线程处理程序。
  3. 然后线程处理程序处理这个特定套接字的任务。

因此明确定义了哪个线程为哪个套接字工作。但是,对于每个套接字,您都需要一个新线程,从长远来看,这对于许多套接字来说是昂贵的。

然后是 vert.x 提供的基于事件的概念。到目前为止,我已经理解,它应该像这样工作:

  1. Vertx 实例部署 Verticle。
  2. Verticle 在后台线程中运行,但并不是每个 Verticle 都有自己的线程。例如,一个 Vertx 实例中可能部署了 1000 个 Verticle,但 Vertx 实例仅处理 8 个线程(nr of cores * 2)。
  3. 然后是事件循环。我不确定它们是如何指代verticles的。我读过每个verticle都有2个事件循环,但真的不知道它是如何工作的。

作为网络服务器示例:

此 WebServer 可以在 Vertx 实例中多次部署。看起来,每个 WebServer 实例都有自己的线程。当我尝试连接 100 个客户端并回复一个简单的响应时,似乎每个客户端都是同步处理的。因为当我在每个服务器处理程序中执行 Thread.sleep 语句时,每秒一个客户端都会收到响应。但是,所有服务器处理程序都应该开始它们的 1 秒睡眠,然后在此时间之后几乎相同地回复所有客户端。

这是启动 100 个客户端的代码:

有人知道对此的解释吗?

0 投票
1 回答
88 浏览

kotlin - 如何在不同的事件循环上启动客户端?

我正在创建一个测试应用程序,假设与服务器有很多连接。当我从我的 Verticle 创建一个客户端时,它总是在同一个线程上处理连接和消息。

当我创建我的verticle时,我设置了

options.setEventLoopPoolSize(4)

所以我希望它循环到 4 个事件循环,因为我想拥有数百万个连接。

我正在做

2019-06-04 17:30:06,479 INFO [vert.x-eventloop-thread-0] MainVerticle:连接在 - Thread[vert.x-eventloop-thread-0,5,main] io.vertx.core.impl .EventLoopContext@150049b3

总是在同一个线程上......如何在不同的事件循环上启动连接

0 投票
1 回答
67 浏览

rx-java2 - 使用 RxJava 遍历 Vertx JsonArray

我有一个消耗传入消息的verticle。每条消息都是一个 vertx JsonObject,其中包含一个 vertx JsonArray。我想为这个数组中的每个元素执行逻辑。逻辑本身包含在一个单独的 Verticle 中。这第二个垂直使用rxVertx. 它定义了几个消费者,每个消费者都委托给单独的方法,所有这些方法都返回一个Observable.

我的问题是:如何:

  1. 遍历每个元素JsonArray
  2. 将每个元素传递给与Observables.

在第一个verticle中,尝试了以下方法:

调用flatMapSingle无法编译,因为:

这样做的正确方法是什么?非常感谢

0 投票
1 回答
134 浏览

rx-java2 - 使用 Vertx JsonArray 和 RxJava Observables

一个 vertxJsonObject包含一个 vertx JsonArray,类似于:

使用数组创建 RxJava 的正确方法是什么Observable,以便 observable 将分别处理数组中的每个元素。尝试了以下方法:

但是使用上述方法,数组不会分成单独的元素。谢谢

0 投票
1 回答
91 浏览

rx-java2 - RxJava - 在第二个 flatMapSingle 中检索 Observable 中的条目

我们有一个 vertx verticle,它接收一个 id 并使用它来查看数据库中是否存在具有该 id 的实体。它包含以下逻辑:

另一个 Verticle 有一个 Observable,它处理一个 id 的列表。它用于rxSend将列表中的每个 id 传递给第一个 Verticle 以进行数据库查找:

有了上面,很容易处理在数据库中找到与 id 关联的实体的情况,因为第一个 vertcle in onNext(),返回实体。问题是针对第二种情况,当没有实体存在并且第一个 verticle 返回时onNext(null)。在这种情况下,如何在第二种情况下检索flatMapSingle当前正在处理的 observable 中的项目(即id没有关联的数据库实体)?或者有没有更好的方法来构建代码?

谢谢

0 投票
1 回答
848 浏览

json - 访问 vertx JsonObject 中的数组元素

鉴于以下情况io.vertx.core.json.JsonObject

  1. 由于事先不知道包含数组 (111222) 的外部元素的名称,因此访问每个数组的元素的正确方法是什么,例如

    {"A":"a1"}

  2. 一旦数组的元素可用作集合,该集合如何转换为 rxJava Observable。尝试了以下方法:

    列表列表 = arrayElements.stream().collect(Collectors.toList());

    Observable observable = Observable.fromIterable(list);

但是,问题是流中的每个元素都表示为java.util.LinkedHashMap.Entry,例如A=a1,而需要的是保留原始 Json 表示。

谢谢

0 投票
1 回答
275 浏览

java - Vert.x 线程命名 - “vert.x-worker-thread-...”

我正在我的一个记录警告的工人 Verticle 中进行阻塞服务调用。这是通过增加时间限制来“解决”的,但是,我更好奇如何读取日志行中线程的命名 - vert.x-worker-thread-3,5,main。完整的日志是这样的——

说明什么3,5,main?它是来自主垂直的某种痕迹吗?谢谢。

0 投票
0 回答
394 浏览

java - 使用 POST 使用 Content-Type:application/x-www-form-urlencoded (Content-Type:application/json 工作正常)的“路由中出现意外异常”

我正在使用“vert.x”创建一个除了“Content-Type:application/x-www-form-urlencoded”之外的发布请求。并得到“路由 java.lang.NullPointerException 中的意外异常”,但是当我删除内容类型时,相同的请求工作正常。

我正在使用 vert.x 3.3.3 并尝试使用垂直创建路线。