问题标签 [vertx-httpclient]

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

vert.x - Vertx java - 使用 compose 对代码进行排序

我有一个逻辑,我需要将数据保存在两个表中(一对多)。我在我的 Java 中创建了两个方法,我正在尝试使用 Vertx Future 和 compose 来按顺序实现逻辑。但是我已经完成了一半,不明白当第一个未来完成时如何实现组合。我的意思是代码为第一个未来运行anAsyncAction_1(materialToAdd); ,并且记录保存在数据库中,但现在我如何在撰写中调用我的第二个方法

下面是我的代码

0 投票
1 回答
367 浏览

java - Quarkus Mutiny Web 客户端安全解码 JSON

我一直在使用 Quarkus 并尝试使用 Mutiny Vertx WebClient。我的代码有效,但我不想依赖不安全/未经检查的分配,这就是我目前在 HttpResponse 上使用 bodyAsJson 方法编写代码的方式。是否有更好的方法或更标准的方法从 Mutiny Vertx 客户端解码 JSON?我意识到我可以调用 bodyAsJsonObject 并返回它,但我需要对从 API 调用返回的数据进行处理,因此我需要将其解码为表示数据形状/结构的类。

0 投票
1 回答
77 浏览

asynchronous - 如何让 Vertx 处理程序在事件循环中更早地执行?

我正在使用 Vertx 3.5.0 并且对它非常陌生。当客户取消他们的请求时,我试图取消代码执行。

目前它已经设置到我们要做的第一件事是部署一个verticle来运行一个HttpServer,然后我们将所有的Routes添加到Router中。从这里开始,每个路由都有一个处理函数。在这个处理程序中,我正在尝试这个:

这是我见过的唯一真正捕获连接关闭的方法,但问题是它在事件循环中没有足够早地执行处理程序。因此,如果我在那里有任何日志,它将如下所示:

...[vert.x-eventloop-thread-0].....

...[vert.x-eventloop-thread-0].....(假设我此时取消了请求)

...[vert.x-eventloop-thread-0].....

...[vert.x-eventloop-thread-0].....(在等待异步数据库调用之前定期执行的最终日志)

...[vert.x-eventloop-thread-0].....(closeHandler代码的执行)

我希望 closeHandler 代码在事件实际发生时中断进程并基本上执行。

无论我何时取消请求,这似乎总是如此,所以我想我错过了一些关于 Vertx 如何处理异步的东西。

我已经尝试通过一个worker Verticle、Router对象的blockingHandler以及HttpServer对象的connectionHandler执行closeHandler代码。所有人都得到了相同的结果。

主要的代码执行也不是由一个worker Verticle执行的,只是一个普通的。

谢谢!

0 投票
2 回答
133 浏览

vert.x - 为每个 HTTP 请求部署新的 Verticle?

目前在应用程序启动时,我正在部署单个 Verticle 并调用createHttpServer(serverOptions).

我已经设置了一个request().connection().closeHandler用于处理关闭的连接事件,主要是当客户决定取消他们的请求时,我们会停止执行该请求。

但是,当我在同一个 Verticle 中设置该处理程序时,它似乎只在closeHandler任何同步代码完成执行后才执行代码,并且我们正在等待数据库通过 Futures 和异步处理程序进行响应。

如果不是那样,我为每个新的 HTTP 请求部署一个工作节点,它会正确地中断执行以执行closeHandler代码。

据我了解,HttpServer 已经应该自己处理请求的可伸缩性,因为它可以一次处理许多请求,而无需部署新的 Verticle。从本质上讲,这听起来像是一个 hacky 解决方法,一旦我们的应用程序如火如荼,它可能会影响我们的线程负载或类似性质的事情。所以我的问题是:

这是这样做的正确方法吗?

如果不是,那么正确的方法或范式是什么?

你如何从它自己的 verticle 和里面取消一个 verticle 的执行closeHandler?通过取消执行,我的意思是包括任何等待完成的期货。

为什么在做这种多verticle方法时closeHandler只异步执行?使用正常方式并使用分配的线程池简单地执行请求会推迟 closeHandler 的执行,直到 eventloop 完成其队列,我们​​需要异步发生

0 投票
1 回答
365 浏览

java - Vertx WebClient 响应缓慢

我是 vertx 和 RxJava 的新手。我正在尝试实现一个简单的测试程序。但是,我无法理解该程序的动态。为什么有些请求需要超过 10 秒才能响应?

下面是我的示例测试应用程序

我想知道的是,是什么让我的响应时间变慢了?

0 投票
1 回答
72 浏览

java - Vertx 客户端正在花时间检查故障

我有一个要求,我通过 Vertx 客户端将一个微服务连接到另一个微服务。在代码中,我正在检查另一个微服务是否关闭,然后在失败时它应该创建一些 JsonObject,其中 solrError 作为键,失败消息作为值。如果有一个 solr 错误,我的意思是如果其他微服务关闭,它通过负载平衡调用 solr,那么它应该抛出一些错误响应。但是 Vertx 客户端需要一些时间来检查故障,并且当检查条件时,jsonobject 中没有 solrError,因为 Vertx 客户端需要一些时间来检查故障,因此条件失败并且 resp 为空。为了避免这种情况,可以做些什么让 Vertx 客户端在检查 solrError 的条件之前失败并返回内部服务器错误响应?

下面是代码:

0 投票
1 回答
120 浏览

graphql - 在 vertx GraphQL 中处理订阅

我尝试使用 Vertx HttpClient/WebClient 来使用 GraphQL Subscritpion,但它没有按预期工作。

服务端相关代码(用 Vertx Web GraphQL 编写)如下,当添加评论时,触发onNext将评论发送到Publisher.

在客户端,我混合使用HttpClient/WebClient,大多数时候,我想使用WebClient,它更容易处理表单post。但似乎它不起作用有一个WebSocket连接。

所以 websocket 部分正在返回使用 HttpClient。

运行客户端和服务器时,添加了注释,但 WebSocket 客户端不打印任何有关 websocket 消息的信息。在服务器控制台上,有这样的消息。

似乎commentAdded根本没有调用后端数据提取器。

GraphQL 客户端和服务器的完整代码在我的 Github 上共享。

0 投票
2 回答
305 浏览

vert.x - Vert.x 3.9 WebClient 中的超时未按预期工作

我需要在下游后端调用上设置请求超时。但是,Vert.x 3.9 中的 WebClient 类似乎并没有像我预期的那样工作。这是它的一些测试代码:

我在同一台主机上运行以下 Go 服务器进行测试:

我的测试服务器的输出显示 WebClient 打开了 5 个并发连接,并且每个请求都因超时而停止。我在这里做错了什么?我应该如何为请求设置连接超时?客户端的输出是:

我希望只看到“成功!” 打印出来,因为运行在同一主机上的 Go 服务器应该在 50 毫秒内响应良好。

编辑:删除了 vertx.close() 并澄清了原始问题...在我的原始测试代码中实际上没有 vertx.close() ,但是在编辑 SO 帖子时添加了它,所以运行它的人不需要按CTRL-C。

0 投票
1 回答
50 浏览

testing - 为什么 HttpClient 类型的 getnow() 方法未定义?

0 投票
1 回答
112 浏览

amazon-web-services - 使用 VertX HttpClient 访问 AWS WebSocket

我在 AWS 上创建了一个带有 Web 套接字的 API 网关。我想使用 VertX 提供的 HttpClient 连接到它。我正在为客户端 Verticle 使用以下代码:

当我使用在本地主机上运行的 VertX 服务器对其进行测试时,相同的代码可以工作,所以我认为这是正确的 WebSocketConnectionOptions 的问题。

当我尝试使用 HttpClient verticle 连接到 AWS 套接字时,我收到“连接被拒绝”错误。使用 wscat 连接到它没有问题。

非常感谢你的帮助。