具有作业元数据和业务数据的Spring Batch作业在单独的数据源中运行非常慢

时间:2017-04-03 07:46:01

标签: java spring jdbc spring-batch spring-jdbc

首先,我对Spring Batch很新,所以,对不起,如果这完全是由于我自己的无知。

我有一个Spring Batch作业,它设置了两个不同的数据源(一个存储业务数据,另一个存储作业元数据)。在这种情况下(我的老板的订单),我没有使用XA交易来选择性能而不是可靠性。

为了完成这项工作,我有一个实现MyBatchConfigurer的具体类BatchConfigurer。我在配置器类中自动装配我的元数据数据源,然后将业务数据数据源连接到我的作业配置中的读取器和写入器。 它似乎工作得很好,但它显着减慢了工作(在我的测试台上从20秒到130秒)。 浏览日志似乎表明,当它点击"注册JDBC Connection"的事务同步时会出现明显的延迟。 我想也许我可以改变同步设置(NEVER / ALWAYS / PER-TRANSACTION),但这没有用。 有没有办法在保留两个数据源设置的同时不受欢迎?

P.S。这项工作目前使用AsyncTaskExecutor运行一系列分区步骤可能很重要 - 但在最后一次迭代中,分区将通过消息队列设置在不同的机器上运行。

0 个答案:

没有答案