莫度编程网

技术文章干货、编程学习教程与开发工具分享

消息队列开发实战:以 CRMEB 开源商城为例(ThinkPHP6 + 全端适配)

CRMEB 框架背景说明

以 CRMEB 开源版本为例,其基于 ThinkPHP6+elementUI+Uni-app 框架开发,全开源无加密,支持微信小程序、公众号、H5、APP、PC 端五端适配与数据同步,是专为开发者打造的极易二次开发的 PHP 开源商城系统。在 CRMEB 中,消息队列作为异步处理核心模块,广泛应用于日志记录、订单处理、短信发送等场景,以下以记录管理员操作日志队列为实例展开讲解。

消息队列核心流程与 CRMEB 实现

  1. 生产与消费逻辑
    在 CRMEB 中,消息队列流程分为生产(程序发起)与消费(命令行执行),文件统一存放于app/jobs目录,推荐以 “一个类一个队列” 的方式开发,确保逻辑清晰且易于维护。

实例:新增管理员操作日志队列(CRMEB 适配版)

1. 创建队列文件
在 CRMEB 的app/jobs目录下创建AdminLogJob.php,基于框架提供的BaseJobs基类与QueueTrait工具 Trait 开发,示例代码如下:

namespace app\jobs;

use app\services\system\log\SystemLogServices;
use crmeb\basic\BaseJobs;
use crmeb\traits\QueueTrait;

/**
 * 后台日志(CRMEB开源商城专用队列)
 * Class AdminLogJob
 * @package app/jobs
 */
class AdminLogJob extends BaseJobs
{
    use QueueTrait;

    public function handle($adminId, $adminName, $module, $rule, $ip, $type)
    {
        // 写入CRMEB系统日志表逻辑(对接SystemLogServices服务层)
        // 必须返回执行结果,CRMEB队列机制会根据返回值判断是否销毁队列
        return true;
    }

    public function test()
    {
        // 调试用小队列,CRMEB建议单队列单逻辑,此为示范多队列场景
        return true;
    }
}

2. 队列使用方式(CRMEB 全端适配场景)

use app\jobs\AdminLogJob;

// 1. 立即加入队列(适用于PC端/公众号等实时性场景)
AdminLogJob::dispatch([$adminId, $adminName, $module, $rule, $ip, $type]);

// 2. 延迟队列(适用于小程序/APP端网络波动场景,延迟600秒执行)
AdminLogJob::dispatchSece(600, [$adminId, $adminName, $module, $rule, $ip, $type]);

// 3. 指定方法执行(CRMEB调试场景专用)
AdminLogJob::dispatch('test', [$adminId, $adminName, $module, $rule, $ip, $type]);

3. 调试与异常处理(CRMEB 特性)
CRMEB 队列机制中,handle方法返回true时任务成功并销毁队列;返回false/0/null/空字符串时任务失败,自动重试(最多 3 次)后销毁。调试时可直接实例化队列类:

use app\jobs\AdminLogJob;

// 仅用于CRMEB开发调试,不建议在生产环境使用
$res = (new AdminLogJob)->handle($adminId, $adminName, $module, $rule, $ip, $type);
var_dump($res);

CRMEB 消息队列部署与扩展优势

  • 多端数据同步:通过消息队列,CRMEB 实现微信小程序、APP 等多端操作日志的统一记录与同步,确保数据一致性。
  • 开源可扩展:全开源无加密的框架设计,允许开发者基于BaseJobs快速扩展自定义队列(如订单超时取消、库存同步等),适配电商业务复杂场景。
  • 命令行消费:通过 CRMEB 提供的php think queue:listen --queue命令重启消费进程,确保高并发下队列处理的稳定性。

总结

在 CRMEB 开源商城系统中,基于 ThinkPHP6+Uni-app 框架的消息队列机制,为五端适配场景提供了高效的异步处理方案。通过 “类级队列” 开发模式与框架封装的队列工具,开发者可轻松实现日志记录、订单处理等功能,同时借助全开源特性快速完成二次开发,满足电商业务的高并发与扩展性需求。

附件:
https://gitee.com/ZhongBangKeJi/CRMEB

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言

    Powered By Z-BlogPHP 1.7.4

    蜀ICP备2024111239号-43