我有一个写入数据库的ItemProcessor和一个写入文件的ItemWriter。我希望能够在ItemProcessor中回滚,并且仍然能够通过ItemWriter。更确切地说,我的逻辑获取从FlatFileItemReader接收的对象并使用它对数据库进行一些维护,如果每件事情都很好--在对象中设置了一些属性,如果我面临任何数据库问题,我会捕获异常,并在对象中设置一些其他属性。处理后的对象将通过FlatFileItemWriter写入文件。我试图扩展FlatFileItemWriter,以便在编写回滚之后抛出异常,但这样做会阻止事情转到文件中。
发布于 2019-12-04 23:02:05
我发现FlatFileItemWriter正在与TransactionAwareBufferedWriter,一起工作,因此无法回滚事务并仍然写入磁盘上的文件,因为只有当事务完成时,TransactionAwareBufferedWriter才会刷新到磁盘。因此,我确实实现了一个纯Writer,它实现了ItemWriter接口,我只是在写入文件、刷新和关闭流之后抛出一个异常,它正在工作,它会回滚事务,同时它会写入磁盘上的文件。
我暂时不会接受我的回答,看是否有人能想出一个更好的方法,也许不会失去拥有FlatFileItemWriter.的好处。
https://stackoverflow.com/questions/59184959
复制相似问题