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

Vertx EventBus被阻止

茅涵映
2023-03-14

我有一个小的vertx应用程序。一个超文本传输协议垂直获取一个请求,并通过带有请求-响应模式的eventbus发送它。所以类似于:

vertx.eventBus().request(queue, request, options, reply -> {
            if (reply.succeeded()) {
                JsonObject body = (JsonObject) reply.result().body();
                context.response().end(body.encode());  
            } else {
                JsonObject result = new JsonObject().put("errorMessage", reply.cause().getMessage());
                    context.response().end(result.encode());
            }
        });

在DB Vertical中,我使用消费者获取一条消息,发送到DB,进行一些更改并发送回HTTP verticle。我的问题是,我有一个必须进行大量检查的删除操作,所以这个过程可能需要10秒钟。此时HTTP verticle仍然可以获得一些新请求,但DB consumer在完成删除操作之前不会收到任何请求。因此不会处理任何请求。唯一有帮助的是将多线程设置为DB verticle,这是无润滑的。Vertx。围绕DB执行的executeBlocking或JAVA线程池也没有帮助,因为消费者只有在回复后才能得到任何东西。我错过什么了吗?非常感谢。

共有1个答案

屠锐
2023-03-14

我从您的问题中了解到,DB verticle部署了一个实例。DB verticle需要作为工作线程进行部署。您还可以部署此verticle的多个实例,以便始终有一个DB verticle可以接受下一个请求

优化建议:如果只有删除操作占用了这么多时间,请在一个特殊的DB垂直链接中分隔此操作。通过这种方式,您的系统响应速度更快,您可以控制部署了多少个DB“删除操作”垂直链接,从而可以控制有多少到数据库的连接可能会被阻止更长时间。

 类似资料:
  • 问题内容: 因此,我有了这个Go http处理程序,该处理程序将一些POST内容存储到数据存储中,并检索其他一些信息作为响应。在后端,我使用: 在我的firefox OS应用程序中,我使用: 传入的部分都一直如此。但是,我的回复被阻止了。给我以下信息: 我尝试了许多其他操作,但是无法从服务器获得响应。但是,当我将Go POST方法更改为GET并通过浏览器访问该页面时,我得到的数据太糟糕了。我无法真

  • java.util.concurrent.CompletionException:Akka.Pattern.AskTimeoutException:收件人[Actor[akka:/web_server/user/MyActor#-769383443]]已终止。发送者[null]发送了类型为“com.data.model.request”的消息。 所以我重写了方法,在那里添加了一个log语句。 现在

  • 我正在尝试使用JWT令牌实现Spring Security,我正在尝试使用方法级授权实现身份验证 我的配置类似于SwaggerConfig.java Web安全配置.java JWT加密过滤器.java JWTAthenticationEntryPoint.java 我已经从这里开始跟踪了 已经尝试了许多解决方案,下面列出几个 昂首阔步UI空给403 如果您发现任何其他改进,请随时发表评论。每一点

  • 我正在与Django合作一个项目,该项目通过React前端上的Django Rest框架通过API提供数据。可浏览的API工作正常,但是,react前端在控制台中给出了一个错误。 我已成功安装django cors标头。 CORS策略阻止从http://127.0.0.1:8000/products/http://localhost:3000获取数据:请求的资源上不存在访问控制允许来源标头。如果不

  • 我在使用https域和https套接字io时收到此警告。 我的代码是这样的: 希望有答案来解决这个问题。我已经从其他人那里搜索过,但我申请时发现不起作用。