我目前正致力于Spring Boot和Spring Batch应用程序,从数据库中读取200,000条记录,处理它并生成XML输出。
我编写了单线程Spring Batch程序,该程序使用JDBCPagingItemReader
从数据库和StaxEventItemReader
读取一批10K记录以生成此输出。整个过程需要30分钟。我想通过使用Spring Batch本地分区来增强此程序。任何人都可以共享Java配置代码来执行Spring Batch分区的任务,这将把处理分成多线程+多文件。我尝试多线程java配置,但StaxEventItemReader
是单线程,所以它不起作用。我唯一看到的就是Partition。
感谢帮助。
答案 0 :(得分:1)
你是正确的,分区是解决这个问题的方法。我没有关于如何配置分区批处理作业的JDBC到XML的示例,但我确实有一个CSV到JDBC的示例,您应该能够在其中替换ItemReader
和{{ 1}}与您需要的(分别为ItemWriter
和JdbcPagingItemReader
)。此示例实际上使用Spring Cloud Task将工作程序作为远程进程启动,但如果将StaxEventItemWriter
替换为partitionHandler
(而不是已配置的TaskExecutorPartitionHandler
),则会执行分区内部作为线程。