我正在编写一个将生成报告的项目。它将通过进行休息调用来读取来自数据库的所有请求,基于它将对端点进行休息调用的请求类型,在获得响应后它将响应保存在对象中并通过以下方式将其保存回数据库:调用端点。
我使用spring-batch来处理批处理工作。到目前为止,我提出的是一项工作(读者,处理器,作家)将完成所有事情。考虑到
,我不确定这是否是正确的设计答案 0 :(得分:2)
通过使用面向块的处理,Reader,Processor和Writer按顺序执行,直到Reader无法返回。 如果您可以一次读取一个项目,请对其进行处理并将其发送回处理持久性的端点,这种方法非常方便。
如果您必须立即阅读所有信息,读者将获得包含所有项目的大集合并将其传递给处理器。处理器将处理所有项目并将结果发送给编写器。您不能只向编写器发送一些内容,因此您必须直接从处理器执行持久性操作,这将违背设计。
因此,据我了解,您有两种选择:
commit-interval 仅在提交了多少项事务后进行控制。所以它不会帮助你,因为所有的处理和持久性都是通过调用rest服务来完成的。
答案 1 :(得分:1)
我已经想出了一个设计,我认为它会正常工作。
关于我提出的问题,以下是答案:
使用异步处理器有助于避免任何队列。 http://docs.spring.io/spring-batch/trunk/reference/html/springBatchIntegration.html#asynchronous-processors
使用commit-internal将解决它