# 异步任务

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 代码层面是解耦了，但执行上仍然是线性的。

## 注意

优化现有代码的时候，可异步化的代码有的带有上下文，简单的异步化可能会丢失上下文信息。
