用它之前该知道的几条局限
这些都摊开写在这儿,没藏在 issue 里。如果有一条对你是致命的,现在发现比以后迁走便宜得多。
重放在代码里是看不见的
你的函数会被从头执行一遍又一遍,但语法上没有任何提示。一句随手的 time.Now()、一次顺手的查库,就能让两遍执行走进不同分支,而且没有任何东西替你拦下来。
不适合高吞吐和很长的历史
每一轮都要把整个函数重跑一次。几十步很轻松,几千步就疼了。代价随流程的长度涨,不只随宽度涨。
没有流程版本管理
一个流程要跑三天,你中途发了个版加了一步,在飞的实例就直接撞进新代码里。Temporal 用 patch API 解决这件事,gotick 还没有。
WithTimeout 还没实现
流程级的 WithTimeout 在 API 里存在,也能传进去,但目前没有任何地方读它——流程不会自己超时。需要一个截止时间的话,用带超时的 WaitForSignal,或者显式 Sleep。
只支持 Go,而且还年轻
没有跨语言 SDK,也没有在 Temporal 那种规模上验证过。如果一个流程出错要赔钱,先把这件事想清楚。
这里还缺什么?
如果你读到这儿,本来想用,但差一步没用上,那一步就是你能告诉我们的最有用的东西,比任何路线图都实在。
提个 issue