项目处理器处的SpringBatch瓶颈

bvjxkvbb  于 2023-01-08  发布在  Spring
关注(0)|答案(2)|浏览(159)

我需要将一些数据从一个表迁移到另一个表,并在这两个表之间应用一些处理。处理是专有的,并作为REST服务公开。因此,我需要从一个表调用REST服务读取记录,然后将处理过的记录写入另一个表。我如何将其实现为Spring Batch,以便我可以为多个记录并行调用REST,因为"我希望每条记录花费很多时间的地方是什么?我计划在ItemProcessor中进行REST调用,它只接受进程中的单个项目方法。

v1l68za4

v1l68za41#

当处理成为瓶颈时,您可以用途:

  • AsyncItemProcessor:这将异步处理项,并有助于扩展处理。有关此组件的详细信息,请参阅此处:https://docs.spring.io/spring-batch/4.0.x/reference/html/spring-batch-integration.html#asynchronous-processors
  • 远程分块:使用此可伸缩性选项,您可以将数据发送到远程工作进程进行处理。这有助于您根据需要添加更多工作进程,从而横向扩展处理。本节中有关远程分块的详细信息:https://docs.spring.io/spring-batch/4.0.x/reference/html/spring-batch-integration.html#remote-chunking

在选择可扩展性选项时,您需要注意一些重要的注意事项,下面详细介绍了这些事项:https://stackoverflow.com/a/20342308/5019386

7vhp5slm

7vhp5slm2#

我也有同样的要求,正如@Mahmoud所说:有一些好的方法:

远程分块:

处理和写入是由工人完成的,而阅读则是由主设备完成的。主设备必须读取实际记录,然后通过导线将其传递给工人。
Remote Chunking in Practice
在异步处理的情况下,您还可以缩放批处理:
Tutorial Spring Batch Integration using Async Processing

相关问题