跳到主要内容

采集数据的任务-责任链的执行

在上一章中讲到了数据采集的处理器执行过程,在此过程中涉及到了 采集、计算、保存、升级维度 四个过程,使用责任链模式串联了起来执行

本章会详细讲解责任链的具体执行过程

数据采集的处理器

org.javaup.handler.core.data.impl.GatherDataHandler#dataHandle

public RuleHandleOutput dataHandle(TotalParamTransfers totalParamTransfers){
//使用责任链进行数据的处理,包括:采集、计算、保存、升级维度等
dataChainContext.getDataChainHandler().executeChain(totalParamTransfers);
return null;
}
  • 责任链执行GatherDataHandler.dataHandle:调用 DataChainContext 获取链头后,串行执行各节点。
  • 链构建DataChainContext.init:启动时收集所有链节点、按 order() 排序并串起来。
  • 节点职责由若干 AbstractDataChainHandler 子类各自实现,按顺序覆盖“采集/计算/保存/升级维度”。

接下来,我会按照 “入口 → 进入链 → 构建链 → 节点职责 → 逐步时序” 的顺序展开。

业务入口:规则处理与参数装配

public RuleHandleOutput handle(ParamTransfers paramTransfers){
//省略...
//数据处理器执行
return dataHandler.dataHandle(totalParamTransfers);
}

通过规则类型路由到具体 DataHandler(采集或查询)。

进入责任链:GatherDataHandler.dataHandle

@Override
public RuleHandleOutput dataHandle(TotalParamTransfers totalParamTransfers){
//使用责任链进行数据的处理,包括:采集、计算、保存、升级维度等
dataChainContext.getDataChainHandler().executeChain(totalParamTransfers);
return null;
}
  • 关键点
    • 这里不做业务处理,仅将装配好的 totalParamTransfers 交给链头,触发整条链依次执行。
    • 返回值在当前实现为 null,说明处理结果以“副作用”(如落库/发消息)为主。

链是如何被“串”起来的:DataChainContext