问题描述
我正在使用 Spring-Batch 执行批处理,该批处理在数据库中创建了一些对象,从这些对象中创建了一个文件,然后将该文件发送到FTP服务器.
I am using Spring-Batch to execute a batch that creates some objects in the database, creates a file from these objects and then sends the file to a FTP server.
因此,我有2个步骤:一个从DB读取conf,将其插入DB并创建文件;第二个将文件发送到FTP服务器.
Thus, I have 2 steps : One that reads conf from DB, insert into the DB and creates the file ; the second sends the file to the FTP server.
问题是FTP服务器出现问题时,我无法回滚事务(以取消向数据库中插入的新内容).
The problem is when there is a problem with the FTP server, I can't rollback the transaction (to cancel the new inserts into the DB).
如何配置作业以在不同步骤中仅使用一项事务?
推荐答案
由于spring-batch的事务性质,这是一个坏主意.
恕我直言,一种简单的解决方案应该是使用作业开始时生成的令牌标记第1步中保存的数据,如果您的FTP上传失败,请转到清除步骤以使用令牌删除所有数据.
This is a bad idea due to transactional nature of spring-batch.
IMHO a simple solution should be to mark data saved in step 1 with a token generated when job starts and, if your FTP upload will fail, move to a cleanup step to delete all data with token.
这篇关于春季批处理-整个工作的一笔交易的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!