首先,我对Spring Batch很新,所以,对不起,如果这完全是由于我自己的无知。
我有一个Spring Batch作业,它设置了两个不同的数据源(一个存储业务数据,另一个存储作业元数据)。在这种情况下(我的老板的订单),我没有使用XA交易来选择性能而不是可靠性。
为了完成这项工作,我有一个实现MyBatchConfigurer
的具体类BatchConfigurer
。我在配置器类中自动装配我的元数据数据源,然后将业务数据数据源连接到我的作业配置中的读取器和写入器。
它似乎工作得很好,但它显着减慢了工作(在我的测试台上从20秒到130秒)。
浏览日志似乎表明,当它点击"注册JDBC Connection"的事务同步时会出现明显的延迟。
我想也许我可以改变同步设置(NEVER / ALWAYS / PER-TRANSACTION),但这没有用。
有没有办法在保留两个数据源设置的同时不受欢迎?
P.S。这项工作目前使用AsyncTaskExecutor运行一系列分区步骤可能很重要 - 但在最后一次迭代中,分区将通过消息队列设置在不同的机器上运行。