当前位置: 首页 > 知识库问答 >
问题:

如何异步编写http REST服务

桓喜
2023-03-14

在vert. x中编写异步请求处理程序的推荐方法是什么?

在此服务中,请求处理通常涉及调用DB、调用外部服务等。但是,我不想阻止请求处理线程。使用vet实现这一目标的推荐方法是什么。十、在一个典型的异步处理链中,我将使用请求处理线程向带有请求对象的消息总线发出消息。另一个处理程序将选择此消息并进行一些处理,例如检查请求参数。然后,这个处理程序可以向总线发出一条新消息,下一个处理程序将执行远程调用,该消息可以被接收。此处理程序将发出一条新消息,其中包含调用的结果,下一个处理程序将执行错误检查等。下一个处理程序将负责创建响应并将其发送给客户端。

如何使用vert创建类似的管道。十、

共有1个答案

宰父正真
2023-03-14

包括HttpServer请求处理程序在内的一切都是异步的,不是吗?

var server = vertx.createHttpServer(HttpServerOptions())
server.requestHandler { req ->
    req.setExpectMultipart(true) // for handling forms
    var totalBuffer = Buffer.buffer()
    req.handler { buff -> b.appendBuffer(buff) }
        .endHandler { // the body has now been fully read
            var formAttributes = request.formAttributes()
            req.response().putHeader("Content-type","text/html");
            req.response().end("Hello HTTP!");
        }
    // the above is so common that Vertx provides: bodyHandler{totalbuff->..}
}.listen(8080, "127.0.0.1", { res -> if(res.succeeded()) ... });

您只需(结束)写入req。response(),位于管道的最终处理程序上。

对于更类似流的实现(即,不是基于回调的),您可以使用Vert. x Rx/ReactiveStreams API。例如,您可以使用Vert. x Web Client发出请求,可能使用其Rx化API。

 类似资料:
  • 问题内容: 我试图研究应如何精确地编写异步函数。经过大量的文档研究之后,我仍然不清楚。 如何为Node编写异步函数? 如何正确实施错误事件处理? 问我问题的另一种方式是:我应该如何解释以下功能? 问题答案: 您似乎将异步IO与异步功能混淆了。由于非阻塞IO更好,所以node.js使用异步非阻塞IO。理解它的最好方法是去观看ryan dahl的一些视频。 如何为Node编写异步函数? 只需编写普通函

  • 异步文件读写 读文件 use AsyncFile; $content = (yield AsyncFile::read(__ROOT__."runtime/test.txt")); 写文件 $res = (yield AsyncFile::write(__ROOT__."runtime/test.txt", "hello wordls!")); $res = (yi

  • 本文向大家介绍如何在现代JavaScript中编写异步任务,包括了如何在现代JavaScript中编写异步任务的使用技巧和注意事项,需要的朋友参考一下 前言 在本文中,我们将探讨过去异步执行的 JavaScript 的演变,以及它是怎样改变我们编写代码的方式的。我们将从最早的 Web 开发开始,一直到现代异步模式。 作为编程语言, JavaScript 有两个主要特征,这两个特征对于理解我们的代码

  • 我正面临着一个问题,即设计能够执行网络I/O的方法(用于可重用库)。我读过这个问题 API设计中C#5Await/Async模式 以及其他与我的问题更接近的问题。 所以,问题是,如果我想同时提供异步和非异步方法,我必须如何设计这些? 例如,要公开方法的非异步版本,我需要执行如下操作 我觉得这不是个好设计。我想要一个关于如何定义私有方法的建议(例如),这些私有方法可以包装在公共方法中以提供两个版本。

  • 问题内容: 我是节点的新手,并尝试在节点中使用异步和事件行为优势。我以前从节点上了解到,用事件对象处理的所有内容都会异步执行。 然后我尝试了这个,请考虑以下代码: 这是异步执行吗?我认为不!为什么,因为我读了很多这句话: 一个事件被触发了,所以去做点什么,然后当你完成它之后,回来告诉我,但是与此同时,我会做点其他的事情。 就像快餐店的场景。但是上面的代码,当事件工作被触发时,将发生以下顺序: 进入

  • 异步Tcp客户端 异步Http客户端 异步Redis客户端 异步Mysql客户端 异步Log日志 异步文件读写 异常Exception