最新公告
  • 欢迎您光临三优资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • CRMEB pro 消息队列

    消息队列

    说明

    将之前在定时任务和事件里面的众多方法转移消息队列中,提升系统运行速度。

    文件目录结构

    ├─crmeb        CREMB核心类库
    │  ├─jobs      消息队列
    

    Queue使用方式

    Queue::instance()->do('方法名称')->job(类名称::class)->secs('延迟时间(s)')->data(参数1,参数2,····)->push()do(string $do) 设置任务执行方法,不调用默认执行doJob方法,
     job(string $job) 设置任务执行类名,必填,例: job(TestJob::class)
     errorCount(int $errorCount) 执行失败次数,不调用默认3data(...$data) 执行数据,无参数可以不调用
     secs(int $secs) 延迟执行秒数,不调用加入正常队列,参数不为0加入延迟队列,延迟$secs执行
    

    子任务和单任务

    子任务

    使用do方法时,传入方法名称,执行队列时会执行该类中对应的方法,
    例如模板消息队列类,类中有众多发送模板消息的方法,使用do方法调用某个方法执行。
    
    return Queue::instance()->do('sendOrderTakeSuccess')->job(WechatTemplateJob::class)->data($openid, $order, $title)->push();
    
    class WechatTemplateJob extends BaseJob
    {
        /**
         * 支付成功发送模板消息
         * @param $order
         * @return bool
         */
        public function sendOrderPaySuccess($openid, $order)
        {
            return $this->sendTemplate('ORDER_PAY_SUCCESS', $openid, [
                'first' => '亲,您购买的商品已支付成功',
                'keyword1' => $order['order_id'],
                'keyword2' => $order['pay_price'],
                'remark' => '点击查看订单详情'
            ], sys_config('site_url') . Route::buildUrl('/pages/order_details/index?order_id=' . $order['order_id'])->suffix('')->domain(false)->build());
        }
        
        /**
         * 确认收货发送模板消息
         * @param $order
         * @return bool|mixed
         */
        public function sendOrderTakeSuccess($openid, $order, $title)
        {
            return $this->sendTemplate('ORDER_TAKE_SUCCESS', $openid, [
                'first' => '亲,您的订单已收货',
                'keyword1' => $order['order_id'],
                'keyword2' => '已收货',
                'keyword3' => date('Y-m-d H:i:s', time()),
                'keyword4' => $title,
                'remark' => '感谢您的光临!'
            ]);
        }
    }
    

    单任务

    不使用do方法时,系统会自动调用类中的doJob执行队列,该类只实现了一个功能
    例如订单未支付10分钟后发送短信,类中只有一个doJob的方法,队列执行时调用该方法执行。
    
    Queue::instance()->job(UnpaidOrderSend::class)->secs(600)->data($orderId)->push();
    
    /**
     * 未支付10分钟后发送短信
     * Class UnpaidOrderSend
     * @package crmeb\jobs
     */
    class UnpaidOrderSend extends BaseJob
    {
        public function doJob($id)
        {
            /** @var StoreOrderServices $services */
            $services = app()->make(StoreOrderServices::class);
            $orderInfo = $services->get($id);
            if (!$orderInfo) {
                return true;
            }
            if ($orderInfo->paid) {
                return true;
            }
            if ($orderInfo->is_del) {
                return true;
            }
            /** @var SmsSendServices $smsServices */
            $smsServices = app()->make(SmsSendServices::class);
            $smsServices->send(true, $orderInfo['user_phone'], ['order_id' => $orderInfo['order_id']], 'ORDER_PAY_FALSE');
            return true;
        }
    
    }
    

    延迟队列

    加入消息队列时不调用secs方法,直接加入到队列中,依次执行。
    Queue::instance()->job(UnpaidOrderSend::class)->data($orderId)->push();//立即执行未付款发送短信
    调用secs方法并传入秒数时,队列加入延迟队列,多少秒后执行该队列。
    Queue::instance()->job(UnpaidOrderSend::class)->secs(600)->data($orderId)->push();//600秒后执行未付款发送短信
    1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!3165260857@qq.com
    2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理,有奖励!
    3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
    4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!


    三优资源网 » CRMEB pro 消息队列

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    三优资源网
    一个高级程序员模板开发平台

    发表评论

    • 232会员总数(位)
    • 1269资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 1577稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情