异步任务.md 1.1 KB

异步任务

  1. 企业微信机器人消息
  2. SMS 消息
  3. 活动匹配

tube 规划

使用 twong tube。

job 数据格式

机器人消息,SMS, 其他任何异步任务格式统一:

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

注意

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