Tag: 弹簧批

Spring Batch Multiple Threads

我正在写一个Spring Batch,想要在需要时扩展它。 我的ApplicationContext看起来像这样 @Configuration @EnableBatchProcessing @EnableTransactionManagement @ComponentScan(basePackages = “in.springbatch”) @PropertySource(value = {“classpath:springbatch.properties”}) public class ApplicationConfig { @Autowired Environment environment; @Autowired private JobBuilderFactory jobs; @Autowired private StepBuilderFactory stepBuilderFactory; @Bean public Job job() throws Exception { return jobs.get(“spring_batch”) .flow(step()).end() .build(); } @Bean(name = “dataSource”, destroyMethod = “close”) public DataSource dataSource() { BasicDataSource basicDataSource = new BasicDataSource(); return […]

Spring Batch Multi Threading – 如何让每个线程读取唯一记录?

许多论坛已经多次询问过这个问题。 但我没有看到适合我的答案。 我试图在我的春季批处理实现中实现multithreading步骤。 有一个包含100k记录的临时表 想要在每个线程的10个提交间隔300个线程中处理它 – 所以在任何时间点都有3000个记录。 我定义了一个任务执行器,并在我想要multithreading的步骤中引用它 我的想法是,首先我将获得线程池大小(10)并使用velue(可以是1-10)更新thread_id列到每个100k记录。 在这种情况下,有10个线程和100k记录,因此10k记录将被分配一个id – 我正在尝试实现一个stagingsteplistener来执行此操作。 为这个临时表写了一个读者。 任务执行器将创建10个读者,每个读者必须读取300个不同的记录并处理它们 – 现在我如何在步骤监听器和读取器之间传递一个公共ID,以便每个线程都有自己的一组记录来处理。 截至目前,我只有一个JVM。 所以我想在Multi Threaded步骤中做这个,而不是考虑基于分区的方法。 请帮忙…… 我提到了pro spring批处理书并创建了一个临时步骤监听器,它使用作业参数从作业配置xml接受运行ID,如下所示 我找不到的是这个? 这个“run.id”来自哪里。 我在书中的任何地方都没有看到。 我在我的spring批处理中复制了相同的实现,当我运行它时,我看到exception说run.id是不可识别的。 请帮我讲一下如何做到这一点?

如何在Spring Batch中设置multithreading?

我已经成功建立了一个Spring Batch项目教程。 我真的很想知道是否可以在“Spring级别”使它成为multithreading。 我想要的基本思路是制作一个任务列表或任务步骤,让它们被独立的线程拾取和处理,理想情况下是一个限于’n’个线程的池。 这可能吗? 如果是这样,怎么样? 有人可以从我目前所在的地方指导我到那一点吗? 我所拥有的简单项目来自本教程。 它基本上有不同的任务,可以将信息打印到屏幕上。 这是我当前的simpleJob.xml文件,其中包含作业详细信息: 我的appContext包含作业存储库bean( SimpleJobRepository ),事务管理器( ResourceLessTransactionManager )和作业启动器( SimpleJobLauncher )。 如果需要的话,我也可以提供这个代码,我只是不想用大量的XML来破坏这篇文章。 非常感谢您的帮助!