问题标签 [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.
vert.x - Vertx java - 使用 compose 对代码进行排序
我有一个逻辑,我需要将数据保存在两个表中(一对多)。我在我的 Java 中创建了两个方法,我正在尝试使用 Vertx Future 和 compose 来按顺序实现逻辑。但是我已经完成了一半,不明白当第一个未来完成时如何实现组合。我的意思是代码为第一个未来运行anAsyncAction_1(materialToAdd); ,并且记录保存在数据库中,但现在我如何在撰写中调用我的第二个方法
下面是我的代码
java - Quarkus Mutiny Web 客户端安全解码 JSON
我一直在使用 Quarkus 并尝试使用 Mutiny Vertx WebClient。我的代码有效,但我不想依赖不安全/未经检查的分配,这就是我目前在 HttpResponse 上使用 bodyAsJson 方法编写代码的方式。是否有更好的方法或更标准的方法从 Mutiny Vertx 客户端解码 JSON?我意识到我可以调用 bodyAsJsonObject 并返回它,但我需要对从 API 调用返回的数据进行处理,因此我需要将其解码为表示数据形状/结构的类。
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执行的,只是一个普通的。
谢谢!
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 完成其队列,我们需要异步发生
java - Vertx WebClient 响应缓慢
我是 vertx 和 RxJava 的新手。我正在尝试实现一个简单的测试程序。但是,我无法理解该程序的动态。为什么有些请求需要超过 10 秒才能响应?
下面是我的示例测试应用程序
我想知道的是,是什么让我的响应时间变慢了?
java - Vertx 客户端正在花时间检查故障
我有一个要求,我通过 Vertx 客户端将一个微服务连接到另一个微服务。在代码中,我正在检查另一个微服务是否关闭,然后在失败时它应该创建一些 JsonObject,其中 solrError 作为键,失败消息作为值。如果有一个 solr 错误,我的意思是如果其他微服务关闭,它通过负载平衡调用 solr,那么它应该抛出一些错误响应。但是 Vertx 客户端需要一些时间来检查故障,并且当检查条件时,jsonobject 中没有 solrError,因为 Vertx 客户端需要一些时间来检查故障,因此条件失败并且 resp 为空。为了避免这种情况,可以做些什么让 Vertx 客户端在检查 solrError 的条件之前失败并返回内部服务器错误响应?
下面是代码:
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 上共享。
vert.x - Vert.x 3.9 WebClient 中的超时未按预期工作
我需要在下游后端调用上设置请求超时。但是,Vert.x 3.9 中的 WebClient 类似乎并没有像我预期的那样工作。这是它的一些测试代码:
我在同一台主机上运行以下 Go 服务器进行测试:
我的测试服务器的输出显示 WebClient 打开了 5 个并发连接,并且每个请求都因超时而停止。我在这里做错了什么?我应该如何为请求设置连接超时?客户端的输出是:
我希望只看到“成功!” 打印出来,因为运行在同一主机上的 Go 服务器应该在 50 毫秒内响应良好。
编辑:删除了 vertx.close() 并澄清了原始问题...在我的原始测试代码中实际上没有 vertx.close() ,但是在编辑 SO 帖子时添加了它,所以运行它的人不需要按CTRL-C。
amazon-web-services - 使用 VertX HttpClient 访问 AWS WebSocket
我在 AWS 上创建了一个带有 Web 套接字的 API 网关。我想使用 VertX 提供的 HttpClient 连接到它。我正在为客户端 Verticle 使用以下代码:
当我使用在本地主机上运行的 VertX 服务器对其进行测试时,相同的代码可以工作,所以我认为这是正确的 WebSocketConnectionOptions 的问题。
当我尝试使用 HttpClient verticle 连接到 AWS 套接字时,我收到“连接被拒绝”错误。使用 wscat 连接到它没有问题。
非常感谢你的帮助。