线程超时,带有来自io.vertx.ext.sql.SQLClient的查询;

问题描述 投票:0回答:1

嗯,我是Vert.x的新开发人员...所以,我在使用数据库连接实现时遇到问题。

[在一个或多个查询中,我有很多信息,例如16万条记录,这些记录将在JSON对象中抛出GraphQL;所以...当查询时间超过30000(ms)...控制台说:

Thread Thread [vert.x-eventloop-thread-1,5,main]已被阻止5026 ms,时间限制为2000 msio.vertx.core.VertxException:线程被阻止

因此,我对此进行了调查,直到找到完整的记录或获取所有记录,我才能找到一种方法来解决,最大化查询或为查询设置更大的值。

sql postgresql datasource vert.x sqlclient
1个回答
2
投票

official documentation中实际上详细讨论了这个问题。

您不能直接从事件循环中调用阻止操作,因为 这将阻止它执行任何其他有用的工作

这就是您目前正在做的-调用阻止操作。

运行阻塞代码的另一种方法是使用工作程序顶点A 工人verticle始终使用来自工人池的线程执行。

在工作层中运行您的“慢速”代码。使用EventBus在EventLoop顶点和工作者之间进行通信。只要您在同一台VM内,通过EventBus传递大型集合就没有开销。

© www.soinside.com 2019 - 2024. All rights reserved.