Cadence跨语言工作流是否可调用Java、C#不同worker的活动
Cadence跨语言活动调用问题解答
答案是完全可以,Cadence原生支持跨不同语言实现的worker调用活动,不需要额外的适配改造。
核心原理是Cadence服务端完全不感知worker的实现语言,所有注册的活动仅通过活动类型名称和绑定的任务队列做唯一识别调度,只要你的两类worker的活动已经正常完成注册,就可以在同一个工作流里被调用。
调用时的注意事项:
- 编写工作流代码时,调用对应活动需要指定准确的活动类型名称,以及该活动对应的worker正在监听的任务队列,Cadence服务端会自动将任务调度给匹配的worker执行,执行结果会以统一格式返回给工作流。
- 需确保活动的入参、出参的序列化/反序列化规则在工作流侧和活动侧保持一致,推荐使用JSON、Protobuf这类通用跨语言序列化协议,避免出现参数解析异常。
- 如果两类worker监听的是不同的任务队列,调用活动时必须显式指定该活动对应的任务队列,否则服务端会默认将任务调度到工作流自身所属的任务队列,导致找不到匹配的worker执行。
参考示例:Java worker实现的
ProcessOrder活动监听java-worker-queue队列,C# worker实现的DeliverGoods活动监听dotnet-worker-queue队列,你无论是用Java还是C#编写工作流,只需要在调用两个活动时分别指定对应的任务队列,即可正常触发两个不同语言的worker执行活动,最终完成完整的业务流程。
内容的提问来源于stack exchange,提问作者Luke
相关产品推荐
相关产品推荐

