问题标签 [vert.x-webclient]

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 回答
323 浏览

mysql - Vert.x (Kotlin) 中使用的 MySQLPool

我目前正在基于 Vert.x(Kotlin) 构建项目,我需要连接到 MySQL 服务器。Vert.x 提供了这个作为 MySQL 连接的解决方案 - https://vertx.io/docs/vertx-mysql-client/kotlin

我注意到有两种方法可以实现这一点。

Vert.x 没有提到在什么样的情况下我们应该通过 vertx,有人知道吗?我们什么时候应该使用第二种实现方式?

0 投票
0 回答
126 浏览

kotlin - Vert.x WebClient https Post 挂起

出于某种原因,POST 请求因超时而失败,而相应的 CURL 请求工作得非常好。会出什么问题?

工作卷曲请求:

不工作 Vert.xWebClient请求:

0 投票
2 回答
67 浏览

asynchronous - WebClient 的 Http Post

我正在尝试使用 Vertx 的 WebClient 测试我的 Post 端点,并始终将 500 作为状态代码。谁能让我知道我在这里做错了什么:-

0 投票
0 回答
53 浏览

vert.x - Vertx AddressResolverOptions setCacheMaxTimeToLive 问题

我正在设置 Vertx AddressResolverOptions TTL。在测试时,我看到一个问题,如果 Min TTL 未设置或设置为小于 Max TTL 值,则 MaxTTL 不会生效。为了进行测试,我在具有两个不同 IP 地址的主机条目之间交替,但如果不重新启动应用程序,IP 的变化不会反映出来。然而,如果我设置 min TTL > max TTL,主机 ip 的变化就会得到反映。

这是代码片段:

AddressResolverOptions addressResolverOptions = new AddressResolverOptions().setCacheMaxTimeToLive(cacheMaxTimeToLive).setCacheMinTimeToLive(cacheMinTimeToLive); vertxOptions.setAddressResolverOptions(addressResolverOptions);

并设置 Vertx 选项 Vertx.vertx(getVertxOptions())

0 投票
2 回答
1713 浏览

kotlin - vert.x 工作线程中的异常

我对 vert.x 平台很陌生。我的项目中有一个标准和一个工人 verticle,它通过 eventBus 进行通信。worker verticle 在循环和数据库访问中执行多个 REST API 调用。

我的问题是工人verticle在某些运行中没有问题地完成任务,但有时它会抛出错误。

Exception in thread "vert.x-worker-thread-12" io.vertx.core.VertxException: Connection was closed

我正在使用 kotlin 协程来处理constructDevice(vertx: Vertx)执行大多数 REST API 调用和数据库访问的函数。

谁能告诉我上述问题的原因是什么,还有什么方法可以改进constructDevice(vertx: Vertx)功能以有效地处理多个 REST API 调用和 MongoDB 访问。

更新的问题:1

@Damian 我已根据您的输入更新了我的问题。为了便于理解,我已经简化了上面的问题,但是当我尝试使用 promise/future 来实现这些事情时,我在某些时候遇到了困难。

我的任务是从不同的 REST 端点获取数据并从中获取 kotlin 类,我想并行处理。

更新的问题:2

@Damian 正如你所建议的,我已经更新了我的代码。

我的问题在里面

在这里,大多数期货都没有解决,执行在这里被绞死。

所以我已更改CompositeFuture.all(futureList).onCompleteCompositeFuture.join(futureList).onComplete根据 vert.x 文档加入将等待所有未来完成

连接组合一直等到所有未来都完成,无论是成功还是失败。CompositeFuture.join 接受多个期货参数(最多 6 个)并返回一个期货,当所有期货都成功时成功,当所有期货都完成并且至少其中一个失败时返回失败

但现在很少有期货会失败。这是更改为之后的未来列表的输出CompositeFuture.join

由于我的设备无法处理并发请求,因此很少有期货失败?还有为什么程序执行卡在里面

如果设备并发请求处理存在问题,那么解决此问题的其他解决方案是什么。是否可以在 vertx 环境之外运行整个其余调用并通过事件总线与其通信?

此外,如果我部署DeviceDiscoverVerticle为标准 Verticle 而不是工作 Verticle,则应用程序完全卡在 CompositeFuture.all(futureList).onComplete.

0 投票
1 回答
291 浏览

vert.x - Vertx Web 客户端为 Multipart/form-data 抛出 HTTP 415 Unsupported Media Type

该服务接收来自移动客户端的多部分请求,并将请求传递给下游服务以上传图像。我在下游服务中看到 415 Unsupported Media Type

获取以下异常

我的下游服务的 API 签名

有人可以指导我的代码片段中有什么问题,或者是否需要在 vertx 服务器或 vertx Web 客户端中启用任何设置?

谢谢,尼蒂什·戈亚尔

0 投票
1 回答
206 浏览

kotlin - 我想用 Vertx 发送一个文件部分图像,我想用 Postman 之类的代码复制这个案例

邮递员示例

当我运行代码显示错误请求时,我已经输入了关键的“图像”并发送了文件部分图像

0 投票
1 回答
966 浏览

vert.x - Vertx WebClient 在多个 Verticle 之间共享还是单一?

我使用 vert.x 作为 api 网关将调用路由到下游服务。

截至目前,我正在使用跨多个 Verticle 共享的单个 Web 客户端实例(通过 guice 注入)

每个verticle都有自己的webclient有意义吗?对提高性能有帮助吗?(我的每个网关实例运行 64 个 Vericles,每秒处理大约 1000 个请求)

每种方法的优缺点是什么?

有人可以帮助找出相同的理想策略吗?

谢谢

0 投票
1 回答
611 浏览

vert.x - Vert Http Client 最大连接池?这个池是每个端点还是总数?

我正在为 api-gateway 使用 vertx Web 客户端(3.8.5)并将 setMaxPoolSize 设置为 20。这个限制是每个端点还是所有端点的总和?

我正在部署我的应用程序,每个 Verticle 有 36 个顶点和 1 个 Web 客户端,总共有 36 个 Web 客户端,我的应用程序需要连接到 1000 多个不同的 ip:port。现在,为了利用连接池的好处,如果上述限制是对总连接数的限制,我需要 setMaxPoolSize >= 1000,这使得来自应用程序的总连接数等于 1000 * 36 >= 36000。以上建议的设置是什么用例?

如果我设置 maxPoolSize = 20 并且它们都没有过期(过期时间 = 60 秒)并且只假设其中有 10 个正在使用,那么当请求不在池中的 ip:port 时会发生什么。它是否排队或其中一个未使用的连接被断开并建立了一个新连接(用于新的 ip:port)?

我的 api-gateway 客户端配置应该是什么来处理不同 ip:port 的多个并发请求?

谢谢,尼蒂什

0 投票
1 回答
1106 浏览

java - 两个 Quarkus 服务之间的非阻塞数据流(Vert.x with Mutiny in Java)

更新!

在解决了一些与主要问题无关的问题后,我修复了示例代码中的小错误,主要问题仍然是关于服务之间的非阻塞流。

背景资料

我在 Quarkus 下移植了一个 Spring WebFlux 服务。该服务对多个大型数据集运行长时间搜索,并在可用时以 Flux(文本/事件流)的形式返回部分结果。

问题

现在我正在尝试在 Quarkus 下将 Mutiny Multi 与 Vert.x 一起使用,但无法弄清楚消费者服务如何在不阻塞的情况下接收此流。

在所有示例中,消费者要么是 JS 前端页面,要么生产者的内容类型是 application/json,这似乎在 Multi 完成之前一直在发送,然后再将其发送到一个 JSON 对象中(这在我的应用程序中没有意义)。

问题

  1. 如何使用 Mutiny 风格的 Vert.x WebClient 接收文本/事件流?
  2. 如果问题是 WebClient 无法接收连续流:在两个 Quarkus 服务之间流式传输数据的标准方式是什么?

这是一个简化的例子

测试实体

生产者 1. 简单的无限流 -> 挂起

Producer 2. 使用 Vertx Paths 无限流 -> 挂起

Producer 3. 简单的有限流 -> 阻塞直到完成

消费者

在生产者和消费者方面尝试了多种不同的解决方案,但在每种情况下,流都会阻塞,直到它完成或无限期挂起,而不为无限流传输数据。我用 httpie 得到了相同的结果。这是最新的迭代: