You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

程序退出时如何安全关闭Cadence客户端并避免活动执行失败?

Cadence服务优雅下线:组件关闭顺序与操作

针对你使用的Cadence客户端group: 'com.uber.cadence', name: 'cadence-client', version: '2.7.8'版本,要解决服务退出时活动轮询器仍获取任务导致执行失败的问题,需按以下顺序关闭组件:

关闭顺序及操作

  1. 停止WorkerFactory
    首先调用WorkerFactory的shutdown()方法(可传入超时参数,比如shutdown(Duration.ofSeconds(30))),该操作会:

    • 立即停止所有由该工厂创建的Worker的任务轮询,不再从Cadence服务器获取新的活动/工作流任务
    • 等待当前正在执行的所有活动任务完成后,再彻底停止Worker实例
      这一步是核心,确保不会有新的任务被拉取,同时保证已有任务正常执行完毕。
  2. 关闭ActivityCompletionClient
    调用ActivityCompletionClient的close()方法,清理该客户端的资源,确保所有已发起的活动完成回调请求能正常处理完毕,避免资源泄漏或未完成的请求失败。

  3. 关闭WorkflowClient
    调用WorkflowClient的close()方法,关闭工作流客户端的连接,释放相关会话资源。

  4. 关闭WorkflowServiceTChannel
    最后调用WorkflowServiceTChannel的shutdown()方法,关闭底层的TChannel通信通道,释放网络连接等底层资源。

关键注意事项

  • 必须严格遵循上述顺序,优先停止任务轮询是避免新任务失败的核心
  • 若设置了shutdown的超时时间,超时后未完成的任务会被强制终止,需根据业务场景合理设置超时时长

内容的提问来源于stack exchange,提问作者Krash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 21:25:54