java - 在vertx.executeBlocking代码中使用mybatis代码有什么大问题吗?

标签 java mybatis vert.x

我想使用MyBatis在Eclipse Vert.x中读写数据库。 Vert.x 官方建议使用 executeBlocking 来处理 blocking code .

在vertx.executeBlocking代码中使用MyBatis代码有什么大问题吗?需要注意什么?

在Vert.x中,使用vert.executeBlocking或者Worker verticles来运行阻塞jdbc代码的程序,性能和并发量会不会不如传统阻塞程序?

最佳答案

澄清:Vert.x 声明,如果您绝对必须使用阻塞代码,则可以将其包装到“executeBlocking”中。这绝对不是一个建议或一个好的做法。

首先,executeBlocking 将在默认工作线程池上运行,该线程池对于长时间运行的任务来说相当小 - 默认情况下为 20 个线程。 其次,如果您从 EventLoop verticle(例如路由器)调用此方法,则由于线程关联性,您的并发性会更差。基本上,这将导致阻塞线程池的大小等于 CPU 核心的数量。
如果您的应用程序不需要扩展并且不需要吞吐量 - 这可能没问题。但也许 Vert.x 无论如何都不是最好的选择。

更具可扩展性的方法是在一组工作器 verticle 中运行数据库代码,并使用 EventBus 与处理程序进行通信。

关于java - 在vertx.executeBlocking代码中使用mybatis代码有什么大问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62113686/

相关文章:

java - 在 JSP 标记中使用 <rtexprvalue>false</rtexprvalue> 有什么好的理由吗?

jboss - MyBatis 与 JBoss 7.1 Web 应用程序集成

mysql - MyBatis生成器: generate mappers with autoincrement fields that work both with Mysql and HSQLDB

java - 如何在vert.x中执行断开连接的阻塞任务?

netty - 如何在 vert.x 套接字服务器中实现连接超时?

java - 在 Java 中哪个更快,而使用递归方法?

java - Gradle 构建错误 :Android java. exe 以非零退出值 1 完成

java - 无法在 Fedora 25 上启动 SQL Developer

java - 使用 Mybatis 将 boolean 参数传递给存储过程

java - vertex 3.x 从http请求获取时区