我的用例是使用spring xd filejdbc作业模块处理50个csv文件并将其加载到MySQL DB。
为此,我在spring-xd-1.0.0.RELEASE \ xd \ config \ servers.yml中配置了数据源连接池,如:
弹簧: 数据源: url:jdbc:mysql:// localhost:3306 / spring_xd 用户名:springxd 密码:springxd driverClassName:com.mysql.jdbc.Driver maxActive:75 maxIdle:10 minIdle:10 initialSize:10 maxWait:30000 validationQuery:选择1 validationInterval:30000 testOnBorrow:是的 testOnReturn:false testWhileIdle:false timeBetweenEvictionRunsMillis:10000 minEvictableIdleTimeMillis:60000 removeAbandoned:true removeAbandonedTimeout:300 logAbandoned:true
当singlenode启动时,xd正在初始化此池。
但问题是,当filejdbc作业再次启动时,会使用上述配置初始化连接池。从\ spring-xd-1.0.0.RELEASE \ xd \ config \ modules \ job \ filejdbc \ filejdbc.properties使用来自servers.yml的相同连接池配置
仅使用filejdbc连接池而不是spring xd将csv文件数据加载到数据库。
因此我的数据库连接已用尽。
现在,当我将servers.yml中的连接减少到max active 20时,并且当作业启动时,spring xd会抛出连接池排气异常,因为我要加载50个csv文件。
对于我的自定义数据库,我根本无法将servers.xml max active配置为10,将filejdbc maxactive配置为60,以便在filejdbc作业启动时可以加载50个文件。这总是引发连接排气异常。
请告知。
详情如下: spring xd version - spring-xd-1.0.0.RELEASE in singlenode java版本 - jdk 7 环境 - 窗口
答案 0 :(得分:0)
本地消息总线中存在一个错误,其中所有分区同时执行。在您的情况下导致连接池耗尽。我们已经为此开了一个错误 - https://jira.spring.io/browse/XD-2868。
在修复此问题之前,您可以使用Redis或RabbitMQ等其他消息总线运行,您应该看到您的工作已完成。您可以尝试启动Redis服务器,然后使用以下命令启动单节点:
xd-singlenode --transport redis