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

我可以为长时间运行但不频繁的任务使用单独的非连接池数据源吗?

宗波涛
2023-03-14

我的应用程序栈由Spring MVC、Hibernate和Apache Tomcat7上的MySQL组成。

这个用例不会经常启动,所以我可能会使用单独的数据源定义而不使用连接池。当然,我可以在Spring中设置两个具有不同名称“abc”和“xyz”的事务管理器,并使用@transactional(name=“abc”)和@transactional(name=“xyz)”。这两个事务管理器都将使用它们各自的数据源--一个有连接池以支持常见的用例,另一个没有连接池以支持长时间运行的事务。这样我就不用担心改变超时配置了。

这将是一个普遍接受的解决方案,还是我应该采取超时配置方法?

共有1个答案

燕建中
2023-03-14

如果没有其他方法来限制应用程序可以启动的连接数,避免使用连接池将会导致问题。例如,如果您要在用户每次单击按钮时启动批处理,请确保限制他们可以执行此任务的时间。

另一种方法是在应用服务器(jdbc/batchprocess)中定义一个新的jdbc资源,并在该资源中配置一个更长的超时时间。然后使用动态数据源路由从一个切换到另一个。

 类似资料:
  • 我正在尝试将一个向服务器发送消息的异步任务迁移到RxJava。该任务大致执行以下操作: 1) 创建将要发送的消息(保存到数据库) 2)向用户显示消息(状态为“发送”) 3)将消息发送到服务器(下面的代码段) 4)将消息标记为已发送或失败(保存到数据库) 5)更新UI 我创建了所需的Rx链,部分如下所示: 当我订阅上述内容时,我会得到一个一次性的。通常,我会将其添加到CompositeDisposa

  • 我写的应用程序使用火花数据集API在数据库笔记本。 我有两个表。一个是15亿行,第二个250万。两个表都包含电信数据,连接使用国家代码和数字的前5位数字完成。输出有550亿行。问题是我有倾斜的数据(长时间运行的任务)。无论我如何重新分区数据集,我都会因为散列键的不均匀分布而得到长时间运行的任务。 我尝试使用广播连接,尝试在内存中持久化大表分区等。。。。。 我有什么选择?

  • 我在context.xml文件中定义了一个Spring调度任务,它每分钟运行一次。该任务调用postgres存储过程。存储过程运行时可以持续一分钟以上。如果当前运行没有完成,spring框架会调用相同的调度程序吗?谢谢,

  • 问题内容: 我们正在经历升级数据库软件的过程,还将从Tomcat 5.5升级到Tomcat7。结果,我使用的是新的JDBC驱动程序,在本例中为推荐的SQL Anywhere JDBC 4.0驱动程序,它需要ODBC服务。 我将其全部用于Eclipse方面取得了巨大的成功。但是奇怪的是,当我尝试在Eclipse之外运行Tomcat时,出现以下错误: 我 可以 得到一个纯Java驱动程序(jConne

  • 我正在使用spring boot spring cloud spring JDBC为单片应用程序开发微服务。目前,应用程序正在通过tomcat JNDI连接池连接到单个数据库。 我们在这里遇到了一个瓶颈,由于各种原因,比如大量的数据库对象、与其他系统的紧密依赖性等,目前无法更改数据库体系结构。 因此,我们基于应用程序特性隔离了微服务。我担心的是,如果我们开发的微服务每个都有自己的连接池,那么到数据

  • 我正在将Dropwizard与HikariCP连接池一起使用,但我想这可能与使用任何连接池有关。如何配置Dropwizard,以便在应用程序关闭时调用HikariCP数据源的shutdown()方法?有可能吗? HikariCP常见问题解答指出,Spring或其他IOC容器使之成为可能,但我目前没有使用DI框架,只有Dropwizard。