我想使用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/