当读卡器、处理器和写入程序在一个步骤中运行时,我只需要打印一次日志。如何做到这一点,使日志不会在每次处理数据块时打印?
批次类
@Configuration
@EnableBatchProcessing
public class Batch
{
@Autowired
private JobBuilderFactory jobBuilderFactory;
@Autowired
private StepBuilderFactory stepBuilderFactory;
@Autowired
private ProcessorListener processorListener;
@Autowired
private WriterListener writerListener;
@Autowired
private MainJobExecutionListener mainJobExecutionListener;
@Bean
public Step step(Reader reader, Processor processor, Writer writer)
{
return stepBuilderFactory.get("step")
.<Input, Output>chunk(10)
.reader(reader)
.processor(processor)
.writer(writer)
.faultTolerant().skipPolicy(new ExceptionSkipPolicy())
.listener(processorListener)
.listener(writerListener)
.build();
}
@Bean
public Job mainJob(Step step)
{
return jobBuilderFactory.get("mainJob")
.listener(mainJobExecutionListener)
.incrementer(new RunIdIncrementer())
.start(step)
.build();
}
}
处理器侦听器示例类我还有另一个要编写的侦听器类。
@Log4j2
@Component
public class ProcessorListener implements ItemProcessListener<Input, Output>
{
@Override
public void beforeProcess(Input input)
{
log.info("step: start processor");
}
@Override
public void afterProcess(Input input, Output output) { }
@Override
public void onProcessError(Input input, Exception e) { }
}
您可以在那里使用@PostConstruct
注释和日志内容,或者只是在构造函数中使用它?
项目读取器将数据从特定源代码读入Spring批处理应用程序,而项目写入器将数据从Spring Batch应用程序写入特定目标。 Item处理器是一个包含处理代码的类,该代码处理读入spring批处理的数据。 如果应用程序读取条记录,则处理器中的代码将在每条记录上执行。 块(chunk)是该tasklet的子元素。 它用于执行读取,写入和处理操作。 可以在如下所示的步骤中配置使用此元素的读取器,写入
我有一个批处理步骤 读取器和处理器流程如何工作?读取器是读取块并等待处理器处理它,还是一次读取所有块。
我正在使用spring批处理,有一个包含两个步骤的工作,第一步(tasklet)验证头CSV,第二步读取一个CSV文件并写入另一个CSV文件,如下所示: 在阅读CSV之前,我使用了一个FlatFileItemReader(在ClassitemReader中)和一个FlatFileItemWriter(在ClassItemWriter中)。我通过下面的tasklet检查CSV文件的头是否正确: 如果
我有“N”没有的。客户/客户。对于每个客户/客户,我需要从数据库(读取器)中获取记录,然后我必须处理(处理器)客户/客户的所有记录,然后我必须将记录写入文件(写入器)。 如何将spring批处理作业循环N次?
我刚开始使用Spring批处理,我有一个特殊问题。我希望使用从3个不同的jpa查询中获取结果,并分别处理它们,然后使用将它们写入一个统一的XML文件。 对于eg,生成的XML看起来像是,
根据已接受的答案代码,对该代码的以下调整对我起作用: 我已经将这个问题更新到了一个可以正确循环的版本,但是由于应用程序将扩展,能够处理并行是很重要的,我仍然不知道如何在运行时用javaconfig动态地做到这一点... 基于查询列表(HQL查询),我希望每个查询都有一个读取器-处理器-写入器。我当前的配置如下所示: 工单 处理机 作家 目前,该过程对于单个查询来说工作得很好。然而,我实际上有一个查