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

VertX:处理柱子体太慢了

计阳泽
2023-03-14
public class MainVerticle extends AbstractVerticle {
    public static void main(String[] args) {
        Vertx vertx = Vertx.vertx();
        vertx.deployVerticle(new MainVerticle());
    }

    public static void log(String message) {
        System.out.printf("%s > %s\n", System.currentTimeMillis(), message);
    }

    @Override
    public void start(Future<Void> fut) {
        // Create a router object.
        Router router = Router.router(vertx);
        router.route().handler(BodyHandler.create());

        router.route("/api/v1.0/log/write")
                .handler(routingContext -> {
                    log("Processing... ");
                    JsonObject result = new JsonObject();
                    result.put("status", "ok");
                    routingContext.response()
                            .putHeader("content-type", "application/json")
                            .end(result.toString());
                });

        Handler<HttpServerRequest> handler = new Handler<HttpServerRequest>() {
            @Override
            public void handle(HttpServerRequest request) {
                request.handler(buffer -> log("Handling2...." + buffer.length()));
                request.endHandler(aVoid -> {
                    log("Done");
                    JsonObject result = new JsonObject();
                    result.put("status", "ok");
                    request.response()
                            .putHeader("content-type", "application/json")
                            .end(result.toString());
                });
            }
        };

        vertx
                .createHttpServer()
                .requestHandler(router::accept)
                .listen(9231, result -> {
                    if (result.succeeded()) {
                        fut.complete();
                    } else {
                        fut.fail(result.cause());
                    }
                });
    }
}
max=50
for i in `seq 2 $max`
do
    curl -H "Content-Type: application/json" \
        -X POST \
        --max-time 10 \
        --retry 5 \
        --retry-delay 0 \
        --retry-max-time 60 \
        --data-binary "@./512-kb.log" \
        http://localhost:9231/api/v1.0/log/write
    echo "\n"
done

文本2018年04月08日7:41:06 PM io.vertx.core.starter信息:已成功部署verticle 1523191273>处理...1523191274>正在处理...1523191275>正在处理...1523191276>正在处理...1523191277>正在处理...1523191278>正在处理...

你能告诉我如何正确地实施它吗?提前道谢。

共有1个答案

暴才俊
2023-03-14

令我吃惊的是,服务执行得如此缓慢。大约每秒1个请求。下面是运行时日志

您的运行时输出似乎不是说您每秒只有一个请求,而是每毫秒有一个请求;)

我尝试使用以下代码:

public class MainVerticle extends AbstractVerticle {
    public static void log(String message) {
        System.out.printf("%s > %s\n", Instant.ofEpochMilli(System.currentTimeMillis()), message);
    }

    @Override
    public void start(Future<Void> fut) {
        Router router = Router.router(vertx);
        router.route().handler(BodyHandler.create());

        router.route("/api/v1.0/log/write").handler(routingContext -> {
            log("Processing... ");
            JsonObject result = new JsonObject();
            result.put("status", "ok");
            routingContext.response().putHeader("content-type", "application/json").end(result.toString());
        });

        vertx.createHttpServer().requestHandler(router::accept).listen(9231, result -> {
            if (result.succeeded()) {
                fut.complete();
            } else {
                fut.fail(result.cause());
            }
        });
    }
}
2018-04-09T06:39:49.154Z > Processing... 
2018-04-09T06:39:49.192Z > Processing... 
2018-04-09T06:39:49.203Z > Processing... 
2018-04-09T06:39:49.213Z > Processing... 
2018-04-09T06:39:49.224Z > Processing... 
2018-04-09T06:39:49.235Z > Processing...
2018-04-09T06:39:49.246Z > Processing... 
2018-04-09T06:39:49.257Z > Processing... 
...
 类似资料:
  • 自从我安装了android studio,它从来没有Eclipse快。每当我开始调试时,在设备上开始调试和运行应用程序通常需要1-2分钟。 问题:我想知道如何解决这个问题(安装windows 64位或安装其他类型的android studion或...) 我的系统配置如下所示: 配备Core i5 cpu的笔记本电脑, Windows 8.1 32位 3GB可用RAM Android Studio

  • 但我想知道是否有一种方法可以先定义公共处理程序,然后一些路由可以定义另一个处理程序。谢谢

  • 如何在Vertx中处理延迟作业列表(实际上是数百个HTTP GET请求,到禁止快速请求主机的有限API)?现在,我正在使用此代码,它被阻止,因为Vertx一次启动所有请求。希望在每个请求之间有5秒的延迟来处理每个请求。

  • 本文向大家介绍rem布局字体太大怎么处理?相关面试题,主要包含被问及rem布局字体太大怎么处理?时的应答技巧和注意事项,需要的朋友参考一下 一般情况下我们设置了html根节点的字体大小作为rem单位的一个基本标准,那么我 们可以紧接着在body标签内设置一个字体大小为该应用的基本字体大小 一百三十九、 如何调用原生的接口? 首先你得选择一个合适的框架作为自己的基础,以Dcloud为例,页面中一定要

  • 我有一个批处理任务,从SQLServer读取记录并写入MARIADB。尽管我在批处理过程中实现了分区的概念,但该过程非常缓慢 下面是源系统和目标系统的数据源配置。 以下是配置的步骤和分区步骤 用读者和作者更新帖子 有人能介绍如何使用Spring Batch提高读写性能吗?

  • 我不熟悉vertx和RxJava。我正在尝试实现一个简单的测试程序。然而,我无法理解这个项目的动态。为什么有些请求需要10秒钟以上才能响应? 下面是我的示例测试应用程序 我想知道的是,是什么让我的响应时间变慢了?