conductor client端源码解析

1.客户端的任务启动

com.netflix.conductor.client.spring.ConductorClientAutoConfiguration
在这里插入图片描述

创建实例时,对应的init的方法为:com.netflix.conductor.client.automator.TaskRunnerConfigurer#init

通过 ScheduledExecutorService 定时的从server端拉取任务
注:每个定义的worker都会有一个独立的线程赋值轮询,即定义的worker越多,创建的轮询线程越多
在这里插入图片描述

自定义worker时会继承 com.netflix.conductor.client.worker.Worker
该接口中定义了默认值 1000 ,即,若不指定拉取每秒拉取一次任务
在这里插入图片描述

2.拉取任务并执行(核心流程)

com.netflix.conductor.client.automator.TaskPollExecutor#pollAndExecute
在这里插入图片描述
其中: com.netflix.conductor.client.telemetry.MetricsContainer#incrementTaskPollCount 会统计该worker的执行数量,

可以通过相关方法获取该类worker的执行数量

2.1 拉取任务

拉取任务的具体接口为 com.netflix.conductor.client.http.TaskClient#pollTask
通过http协议调用 server端的接口 : tasks/poll/{taskType}

在这里插入图片描述

2.2 执行任务

worker的执行在独立的线程池中,线程池的大小有配置的 conductor.client.threadCount 控制;

另外,同一时刻一个客户端实例上在执行的task数量不能超过threadCount,参看:
com.netflix.conductor.client.automator.PollingSemaphore#canPoll

执行worker的方法 : com.netflix.conductor.client.automator.TaskPollExecutor#processTask
该方法两个关键逻辑:

  • 1.执行worker逻辑
  • 2.异常情况的处理

2.2.3 执行worker的逻辑

com.netflix.conductor.client.automator.TaskPollExecutor#executeTask
在这里插入图片描述
com.netflix.conductor.client.worker.Worker#execute 就是实现Worker接口时实现的方法

1.异常处理:
在这里插入图片描述
其中主要是进行失败重试的逻辑,重试的次数为 updateRetryCount,对应于配置项中 的conductor.client.updateRetryCount,默认3次

最后在com.netflix.conductor.client.automator.TaskPollExecutor#updateWithRetry 中,调用server端接口更新任务数据
在这里插入图片描述
在这里插入图片描述
调用server端的rest接口更新数据

2.向server更新任务信息

最后也是调用的 com.netflix.conductor.client.automator.TaskPollExecutor#updateWithRetry 方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值