# 异步任务 1. 企业微信机器人消息 2. SMS 消息 3. 活动匹配 ## tube 规划 使用 twong tube。 ## job 数据格式 机器人消息,SMS, 其他任何异步任务格式统一: ```json { "cmd": "sms", "params": { "field1": "value1", "field2": "value2", }, "ts": 1988332344, "sender": "t1" } ``` 格式解释: 1. 不依赖 beanstalkd 的 tube,json 自解释 2. 任务执行者通过 cmd 来确定 params 的内容。 3. ts 表示任务入队的时间戳,重复入队则重置,失败重试不重置。此时间戳也可用于 hash,使 job 分散到不同的 beanstalkd 实例。 4. sender 表示发送任务的服务进程标识。 这样,对于 beanstalkd 分布式或单机,单 tube 或多 tube, 甚至更换其他任务组件也无大的影响。 ## 3 用于替换 thinkphp6 的 event, 因为 thinkphp6 的 event 代码层面是解耦了,但执行上仍然是线性的。 ## 注意 优化现有代码的时候,可异步化的代码有的带有上下文,简单的异步化可能会丢失上下文信息。