山一程--软件开发--Spring batch 学习实践记录

目的:企业级数据处理技术,Hadoop 等系统成本高,结合实际情况,采用 Spring batch 技术处理大量数据.

粒度为job的每个步骤,抽象化数据读取,写入,自定义 validation, 及 filter , 结合mysql 持久化各项数据审计.

失败作业定制化处理。


1. 参考:

《Spring batch 权威指南》


2. 记录

2022-12-31 18:27:51

1. 自定义 validation, 

  1.自定义实现类, 注意状态的持久. 

 

public class UniqueLastNameValidator extends
        ItemStreamSupport implements Validator<Customer> {

    private Set<String> lastNames = new HashSet<>();

    @Override
    public void validate(Customer customer) throws ValidationException {
        if(lastNames.contains(customer.getLastName())){
            throw new ValidationException("duplicate last name was found: " +
                    customer.getLastName());
        }
        this.lastNames.add(customer.getLastName());
    }

    @Override
    public void open(ExecutionContext context){
        String lastNameKey = getExecutionContextKey("lastNames");
        if(context.containsKey(lastNameKey)){
            this.lastNames = (Set<String>)context.get(lastNameKey);
        }
    }

    @Override
    public void update(ExecutionContext context){
        context.put(getExecutionContextKey("lastNames"),this.lastNames);
    }
}

Bean 


 

posted @ 2022-12-31 18:34  君子之行  阅读(14)  评论(0)    收藏  举报