登录
首页 >  Golang >  Go问答

如何从“workflow.Context”获取“context.Context”?

来源:stackoverflow

时间:2024-04-08 18:57:39 155浏览 收藏

从现在开始,努力学习吧!本文《如何从“workflow.Context”获取“context.Context”?》主要讲解了等等相关知识点,我会在golang学习网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文内容吧,希望能帮到你!

问题内容

我正在实现一个 Cadence 工作流程,需要使用 context.Context 参数调用函数。如何从 workflow.Context 获取 context.Context?这只是 ctx.(*context.Context) 的问题吗?


正确答案


它不是 context.Context

您根本不应该永远编写任何使用 context.Context 的工作流程代码。为了确定性,所有需要 context.Context 的调用都应该编写在工作流活动或本地活动中。

换句话说,工作流代码应该只包含编排/管理其他工作流实体(例如 events/childWF/Signal/etc)的逻辑。

workflow.Context是worker在工作流执行过程中传入工作流运行时信息的特殊数据结构。例如,workflowID 和 runID。它恰好调用了 Context 只是因为这看起来与 Golang 风格非常相似。除此之外,它与 context.Context 没有任何直接关系。

在Java客户端中,没有workflow.Context,worker传递这些数据的方式是通过ThreadLocal

如果你确实想将一些KV数据从外部传递到工作流代码,你可以使用上下文传播:https://github.com/uber-common/cadence-samples/tree/master/cmd/samples/recipes/ctxpropagation

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《如何从“workflow.Context”获取“context.Context”?》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>