Camunda External Task中的“topic”是什么?其底层实现技术是怎样的?
Camunda External Task Topic 底层实现逻辑说明
Camunda 外部任务中的topic本质是业务层面的关联标识,没有用到消息中间件的Topic相关能力,底层完全基于关系型数据库的字段匹配实现,具体逻辑如下:
引擎侧存储逻辑
- 你在BPMN流程的外部任务节点配置的topic名称,会在流程实例运行到该节点时,作为
topic_name_字段的值,持久化到Camunda运行时外部任务表ACT_RU_EXT_TASK中。 - 该条任务记录同时会存储任务优先级、锁定状态、过期时间、关联流程实例/执行实例ID、业务参数等完整元数据。
Worker订阅匹配逻辑
- Worker端的“订阅”是抽象逻辑,底层采用定时主动轮询拉取的模式,不存在服务端主动推送:Worker会按照配置的轮询间隔,主动调用Camunda的拉取接口,请求时携带指定订阅的topic名称作为过滤参数。
- 引擎收到拉取请求后,会执行数据库查询,筛选
ACT_RU_EXT_TASK表中同时满足以下条件的任务:topic_name_与请求携带的topic值完全匹配- 任务处于待执行状态,没有被锁定或锁定已过期
- 满足请求中携带的租户ID、优先级、业务Key等额外过滤规则
- 匹配到的任务会被引擎先加锁(更新
lock_owner_、lock_exp_time_字段),再返回给发起请求的Worker,Worker拿到任务后执行对应的业务逻辑即可。
技术方案核心特性
- 完全不依赖第三方消息队列组件,所有topic匹配逻辑都基于数据库等值查询实现,和Camunda核心事务绑定,避免了分布式事务一致性问题。
- 整体实现轻量,和Camunda的现有任务调度逻辑对齐,不需要额外部署中间件即可运行。
内容的提问来源于stack exchange,提问作者hsingh
相关产品推荐
相关产品推荐

