Skip to content

架构概述

EBAOZU V4 采用 Swoole Crontab 高性能定时调度ThinkQueue(基于 Redis 驱动)异步消息队列 相结合的分布式任务处理架构。

通过将耗时的外部网络调用(如支付宝代扣、微信分账、电子合同生成、短信推送、大数据风控评分等)异步入队处理,确保了高并发场景下 HTTP 接口的毫秒级响应与高系统吞吐量。


核心异步队列 (ThinkQueue) 全景清单

队列类统一放置于 app/jobs/ 目录下,继承自 crmeb\basic\BaseJobs

租赁业务与风控履约队列

队列类名 (app/jobs/order/)触发时机 / 调度频率核心业务处理逻辑失败重试策略
OrderWithholdJob每日代扣窗口 (07:00~22:00) / 每期账单还款日遍历到期租赁账单,调用支付宝/微信代扣接口扣除租金,更新分期还款状态与销账3 次指数退避 (间隔 1h, 4h, 8h)
OrderAutoAuditJob用户提交租赁订单并完成签约后 1 分钟调用第三方风控引擎执行大数据机审评分,判定自动通过、加押或转人工复审2 次重试
OrderUnpaidJob
AutoOrderUnpaidCancelJob
订单创建后延迟 N 分钟 (如 30min)检查订单是否完成支付,超时未付则自动释放锁定库存并关闭订单1 次重试
LeaseRejectFulfillJob商家在二段式取消中选择路线 B异步执行状态 3 逆向链:自动转自提、静默核销收货、完结订单、解冻预授权并原路退款3 次重试,耗尽告警
CloseTimeoutBuyoutJob用户发起买断后超时未支付关闭超时未付款的买断申请单,恢复原租赁正常分期状态1 次重试

财务分账与结算清算队列

队列类名业务定位核心处理逻辑
OrderProfitsharingJob
AutoOrderProfitsharingJob
微信服务商分账在订单确认收货且过售后维权期(如 7 天)后,自动向微信支付请求解冻资金并按比例分账给门店与供应商
CircleFinancialRecordJob门店与商圈财务流水异步归集商户日结算账单,计算平台抽佣、代扣手续费与门店实收流水

消息触达与第三方通知队列

队列类名 (app/jobs/notice/)消息载体核心处理逻辑
SmsJob / SmsAdminJob手机短信调用 EBAOZU 自研一号通短信接口下发验证码、还款预警与催缴通知
WechatTemplateJob微信公众号下发服务号还款账单、代扣成功与逾期提醒模板消息
RoutineTemplateJob微信小程序下发订单发货、审核结果与自提核销订阅通知
EnterpriseWechatJob企业微信 Webhook向运维与客服企微群实时播报大额订单、风控拦截与系统异常告警

Swoole 定时任务与常驻调度

app/jobs/ 与系统事件中,Swoole 进程启动时自动注册以下毫秒级常驻调度器:

  1. 每日代扣定时触发器:每日 07:0012:0018:00 自动扫描 eb_store_order_installment 当日应还账单,批量推入 OrderWithholdJob
  2. 到期与逾期预警扫描:每日 09:00 自动检索距到期日还剩 3 天的账单发送还款提醒;扫描超出宽限期的账单累计违约金并发送催缴短信;
  3. 超时自动收货检测:每小时执行一次,检索发货已满 7 天且买家未确认收货的订单,自动执行系统收货并起租。

运维部署与 Supervisor 守护配置

为保证队列在生产环境中具备高吞吐量与故障自愈能力,必须使用 Supervisor 进行进程守护。

Supervisor 队列守护配置示例

ini
[program:ebaozu_queue]
process_name=%(program_name)s_%(process_num)02d
command=php /www/wwwroot/ebaozu_v4/think queue:listen --queue default,order,notice --delay 0 --memory 256 --sleep 3 --tries 3
directory=/www/wwwroot/ebaozu_v4
autostart=true
autorestart=true
user=www
numprocs=4
redirect_stderr=true
stdout_logfile=/www/wwwroot/ebaozu_v4/runtime/log/queue.log
  • 配置参数建议
    • numprocs=4:启动 4 个并发消费进程,兼顾多核 CPU 性能;
    • --memory 256:单个 Worker 内存达到 256MB 时自动平滑重启,防止 PHP 内存泄漏;
    • --tries 3:队列任务连续失败 3 次后自动移入死信队列并记录错误日志。

承信租多门店租赁商城系统官方文档