datax(16):源码解读AbstractReporter

datax(16):源码解读AbstractReporter之前介绍了通信类communication,容器类container,communication的收集类collector,今天再看一个报告类Reporter;一、概述AbstractReporter主要作用:Reporter的主要功能是将收集到的信息上报给上级主要方法:reportTGCommunication(汇报TG的communication信息给上级),reportJobCommunication(汇报job的communication信息给上级)二、族谱族谱里面目前只有父子.

大家好,又见面了,我是你们的朋友全栈君。

之前介绍了通信类communication,容器类container,communication的收集类collector,今天再看一个报告类Reporter;


一、概述AbstractReporter

  1. 主要作用:Reporter的主要功能是将收集到的信息上报给上级
  2. 主要方法:reportTGCommunication(汇报TG的communication信息给上级),reportJobCommunication(汇报job的communication信息给上级)

二、族谱

族谱里面目前只有父子二人,父类AbstractReporter里面只是负责声明抽象方法,子类里负责具体实现;
在这里插入图片描述


三、主要方法

AbstractReporter

  /** * 汇报job的communication信息给上级(目前datax中job无上级,所以子类中do nothing) * * @param jobId Long * @param communication Communication */
  public abstract void reportJobCommunication(Long jobId, Communication communication);

  /** * 汇报TG的communication信息给上级 * * @param taskGroupId Integer * @param communication Communication */
  public abstract void reportTGCommunication(Integer taskGroupId, Communication communication);

子类ProcessInnerReporter,注意里面reportJobCommunication是do nothing

  /** * 汇报job的communication信息给上级(目前datax中job无上级,所以do nothing) * * @param jobId Integer * @param communication Communication */
  @Override
  public void reportJobCommunication(Long jobId, Communication communication) { 
   
    // do nothing
  }

  /** * 将TaskGroupContainer的信息汇报给上级,操作也很简单直接更新注册时分配给该TaskGroup的Communication(Map中的值) * * @param taskGroupId Integer * @param communication Communication */
  @Override
  public void reportTGCommunication(Integer taskGroupId, Communication communication) { 
   
    LocalTGCommunicationManager.updateTaskGroupCommunication(taskGroupId, communication);
  }

注:

  1. 对源码进行略微改动,主要修改为 1 阿里代码规约扫描出来的,2 clean code;

  2. 所有代码都已经上传到github(master分支和dev),可以免费白嫖

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/145657.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月16日 下午9:40
下一篇 2022年5月16日 下午9:40


相关推荐

  • mysql sql dateadd_sql数据库dateadd

    mysql sql dateadd_sql数据库dateadd最好避免在 where 子句中的列上运行函数 因为这会削弱数据库使用索引的能力 假设您的表中有 200 万行 其中 100 条是从 2020 年 2 月开始的 并且 date 列已建立索引 数据库可以优化查询 例如 WHEREdateBET 2020 02 01 AND 2020 02 29 使用索引并只检索它知道的那 100 行 但是它不能做到 WHEREYEAR date 2020ANDMONT

    2026年3月18日
    2
  • 墨刀 AI Agent 登场,产品经理迎来专属智能体时代

    墨刀 AI Agent 登场,产品经理迎来专属智能体时代

    2026年3月16日
    2
  • 怎么让Linux发邮件? Linux怎么发email

    怎么让Linux发邮件? Linux怎么发email相比大家也想让自己的Linux备份啊什么的存储起来  放到哪里最安全呢 相比来说放到自己QQ邮箱比放到自己电脑更安全一些我们今天就来做一个实验让你的Linux发邮件到你的mail中我们今天需要一个软件(mailx)直接yum装即可:yuminstall-ymailx 然后我们创建一个隐藏文件类似.sh 随便一个就好 vi/email.sh然…

    2022年10月20日
    5
  • MP4格式详解_mp4格式有哪些

    MP4格式详解_mp4格式有哪些一、mp4概述MP4文件中的所有数据都装在box(QuickTime中为atom)中,也就是说MP4文件由若干个box组成,每个box有类型和长度,可以将box理解为一个数据对象块。box中可以包含另一个box,这种box称为containerbox。一个MP4文件首先会有且只有一个“ftyp”类型的box,作为MP4格式的标志并包含关于文件的一些信息;之后会有且只有一个“moov”类型的box(MovieBox),它是一种containerbox,子box包含了媒体的metadata信息;MP4文

    2022年10月16日
    3
  • springboot引用自定义属性

    springboot引用自定义属性

    2021年3月12日
    146
  • phpstrom 3.3激活码_通用破解码

    phpstrom 3.3激活码_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    37

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号