|
|
@@ -0,0 +1,42 @@
|
|
|
+# 异步任务
|
|
|
+
|
|
|
+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 代码层面是解耦了,但执行上仍然是线性的。
|
|
|
+
|
|
|
+## 注意
|
|
|
+
|
|
|
+优化现有代码的时候,可异步化的代码有的带有上下文,简单的异步化可能会丢失上下文信息。
|