其实在前面说 State 的过程中我们已经看到了很多和 Result 有关的东西了。Result 可以认为就两种,同步和异步的,其实也可以看成一种;但是,从另一个维度看,Result 其实也可看成成功的和失败的,anyway,这些都是在 Result 中保存了的。
我在这里就简单回顾看看 第三篇 中看过的内容,其实 Result 中就放了这几样东西:
分别是 任务ID、返回值、执行状态 以及 错误堆栈信息,我们在调用的地方用这些信息就足够了。 Worker State
除了 Task 有状态之外,Worker 其实也是有状态的,回顾我们 第一篇 的内容,Worker 的启动过程这么冗长,所以不是说一运行就到了 Runing 状态了,中间肯定是有各种状态的,所以我们不妨一起来看看。
回顾一下我们之前看的一些代码,我们应该是有讲过一个叫做 HeartBeat 的组件,它的作用就是保持发送心跳,告诉其他 Worker 这个 Worker 还活着,那么这是一种状态,除了这些状态之外,我们还可以找到的其他 Worker 状态有:
worker-offline
worker-online
worker-heartbeat
Worker-heartbeat 我们很清楚它在哪里发送出去的了,那么 Worker-online 和 Worker-offline 又是在哪里发出去的呢?其实都一样的,我们看到 Heart 这个 Bootstep:
着重看看 start 和 stop 方法,我们会发现其实调用的都是同一个地方:
一切了然于胸!