easy-batch job 报告

JobReport api

easy-batch 包含了一个在batch 处理阶段的metrics 以及batch完成之后的报告

  • 包含的信息
job启动以及结束的时间
job的状态
读取的record
写入的record
过滤的record
错误数

自定义metrics

通过JobMetrics的addMetric我们可以添加自己的metrics,但是为了访问JobMetrics我们需要实现JobListener 接口

  • 参考demo
public class RecordProcessingTimeCalculator implements PipelineListener, JobListener {
    private long startTime;
    private long nbRecords;
    private long recordProcessingTimesSum;
    @Override
    public Record beforeRecordProcessing(Record record) {
        nbRecords++;
        startTime = System.currentTimeMillis();
        return record;
    }
    @Override
    public void afterRecordProcessing(Record input, Record output) {
        recordProcessingTimesSum += System.currentTimeMillis() - startTime;
    }
    @Override
    public void onRecordProcessingException(Record record, Throwable throwable) {
        recordProcessingTimesSum += System.currentTimeMillis() - startTime;
    }
    @Override
    public void afterJobEnd(JobReport jobReport) {
        jobReport.getMetrics().addMetric(
            "Record processing time average (in ms)",
             (double)recordProcessingTimesSum / (double)nbRecords);
    }
}

合并job的报告

很多时候我们是并行的运行job,但是需要获取之后的结果,那么可以使用合并报告的功能,代码上
我们可以通过JobReportMerger 来处理
参考图

  • 提供的metrics
 
启动时间(基于最小并性能报告)
结束时间(基于最大并并行报告)
总读取record数(并行报告的总和)
总写入record数(并行写入报告的总和)
总过滤record数(并行报告过滤的总和)
总错误record数(并行报告过滤的总和)
最终的状态(COMPLETED,所有都完成,FAILED有一个失败了)
最后的名称为job名称的聚合
  • 代码调用
JobReportMerger reportMerger = new DefaultJobReportMerger();
JobReport finalReport = reportMerger.mergeReports(report1, report2);

参考资料

https://github.com/j-easy/easy-batch/wiki/job-reporting

原文地址:https://www.cnblogs.com/rongfengliang/p/12730005.html