配置文件async.php

<?php

use Baiy\ThinkAsync\Subscribe\ConfigFileEventGetter;
use Baiy\ThinkAsync\Subscribe\DemoSubscriber;
use crmeb\subscribes\DemoAsyncSubscriber;
use crmeb\subscribes\DemoAsyncSubscriber01;

return [
    // 异步执行默认队列
    'async_exec_method_queue'        => 'async_exec_method',
    // 异步执行自定义队列
    'async_exec_method_custom_queue' => [
        'async_exec_method_custom' => '自定义异步执行队列',
        'async_exec_method_custom01' => '自定义异步执行队列01',
    ],

// 异步订阅默认队列名称
    'subscribe_default_queue'        => 'subscribe_default',
    // 异步订阅事件获取类
    'subscribe_event_get_class'      => ConfigFileEventGetter::class,
    // 异步订阅事件配置(可通过修改`subscribe_event_get_class`改变配置来源)
    'subscribe_event_config'         => [
        [
            'name'       => 'demo',
            'title'      => '演示事件',
            'queue'      => 'async_subscribe_demo', // 事件处理队列 为空使用异步订阅默认队列
            // 事件订阅者配置
            'subscriber' => [
                [DemoSubscriber::class, 'handle'],
            ]
        ],
        [
            'name'       => 'zidingyishijian',
            'title'      => '自定义事件',
            'queue'      => 'async_subscribe_zidingyi',
            // 事件订阅者配置
            'subscriber' => [
                [DemoAsyncSubscriber::class, 'handle'],
                [DemoAsyncSubscriber01::class, 'handle'],
            ]
        ],
    ]
];

异步代码执行/异步延迟执行/异步事件订阅文件PublicController.php

<?php

namespace app\api\controller\demo;

use Baiy\ThinkAsync\Facade\Async;

/**
 * 公共类
 * Class PublicController
 * @package app\api\controller
 */
class PublicController
{
    //异步代码执行/异步延迟执行/异步事件订阅
    //http://meishu.local/api/demo/demoasync
    public function demoasync(){
        // 异步执行默认队列
        //Async::exec(self::class, 'test', 'exec');
        //异步执行代码使用自定义队列
        //Async::execUseCustomQueue(self::class, 'test','async_exec_method_custom', 'exec');
        //Async::execUseCustomQueue(self::class, 'test','async_exec_method_custom01', 'exec');
        // 异步延迟执行默认队列 延迟10秒
        //Async::delay(10, self::class, 'test', 'delay');
        // 异步延迟执行默认队列 延迟10秒
        //Async::delayUseCustomQueue(10, self::class, 'test','async_exec_method_custom', 'delay');
        // 获取所有队列标示
        //var_dump(Async::queue());
        // 获取队列长度
        //var_dump(Async::queueSize('async_exec_method_custom'));
        // 获取队列名称
        //var_dump(Async::queueName('async_exec_method_custom'));
        
        //事件订阅
        //事件触发
        Async::trigger('zidingyishijian',33,'lisi');
        echo 11;
        
    }

public static function test()
    {
        $arr['name'] = mt_rand(111111,999999);
        $res = Db::name('demo')->insert($arr);
    }
}

事件订阅者DemoAsyncSubscriber.php

<?php

namespace crmeb\subscribes;
use think\facade\Db;

class DemoAsyncSubscriber

{
    public static function handle($id,$name){
        $arr['name'] = $id.$name;
        $res = Db::name('demo')->insert($arr);
    }
    
}

事件订阅者DemoAsyncSubscriber01.php

<?php

namespace crmeb\subscribes;
use think\facade\Db;

class DemoAsyncSubscriber01

{
    public static function handle($id,$name){
        $arr['name'] = $name.$id;
        $res = Db::name('demo')->insert($arr);
    }
    
}

执行命令:

php think queue:work --queue async_subscribe_zidingyi

Thinkphp6 baiy/think-async redis 异步代码执行/异步延迟执行/异步事件订阅相关推荐

  1. iOS: 零误差或极小误差的定时执行或延迟执行?

    问题如下: 节奏类游戏需要执行很多的跟音乐节拍相关的操作,并且为了保证节奏感,需要让操作跟节拍的关系十分紧密.对两者间隔要求不能超过0.02秒或更低. 目前使用了 GCD 中的 asyncAfter( ...

  2. .net coer IQueryable类型的执行逻辑(延迟执行),认真看,你会有收获的。

    先看图 IQueryable 在使用EF框架时候,我们都会使用Linq表达来创建sql语句式进行数据查询 使用Linq表达式创建的变量 就是IQueryable变量 在完成IQueryable的创建以 ...

  3. js 延期执行_js延迟执行函数

    在js中,延迟执行函数有两种:setTimeout和setInterval setTimeout("test()","2000"); //2000毫秒后执行te ...

  4. php设置延迟代码执行,PHP 延迟执行

    作为一名菜鸡的第一个记录 需求是 后台派单的时候让骑手3分钟内接单..如果不接单 自动回到带分配的界面.. 先在派单的时候生成一个文件  然后通过下面的函数调用 一个脚本// 远程请求(不获取内容)函 ...

  5. 异步生成器_使用生成器实现异步并等待

    异步生成器 Nowadays we can write our asynchronous code in a synchronous way thanks to the async and await ...

  6. LINQ 的查询执行何时是延迟执行,何时是立即执行,以及查询的复用

    延迟执行的经典例子: 我们用 select ++i 就可以看到在foreach 时候,查询才被执行. public static void Linq99() {     int[] numbers = ...

  7. Lambda 的延迟执行

    Lambda 的延迟执行 使用 Lambda 表达式的主要原因是:将代码的执行延迟到一个合适的时间点,即调用的时候. ​ 所有的 Lambda 表达式都是延迟执行的. ​ 因为匿名内部类的方法都是要等 ...

  8. vue 请求时方法执行顺序问题,异步请求无法同时处理多个接口,使用同步顺序执行:async/await使用

    vue 请求时方法执行顺序问题,异步请求无法同时处理多个接口,使用同步顺序执行:async/await使用 异步解决方案:async/await 多个await,同步拿到数据再处理 多个接口处理拿到数 ...

  9. 使用 Async / Await 来编写简明的异步代码

    原文链接:https://blog.patricktriest.com/what-is-async-await-why-should-you-care/ 复制代码 停止书写回调函数并爱上ES8 以前, ...

  10. js等待异步执行完再执行,js如何让代码同步执行

    JS方法怎么同步执行 . 方法1内部用了var表示内部变量执行完一次后会自动释放:方法2内的变量cc不能与方法1重名:示例代码如下测试可以varstr='';functioncfun(obj){str ...

最新文章

  1. PuTTy:PuTTy的简介、安装、使用方法之详细攻略
  2. 计算机英语os是什么意思,os是什么意思(为什么手机系统有的叫OS)
  3. XCTF WEB simple_js
  4. mysql语句:索引,游标,存储过程,视图,分区,分库分表,数据库集群,数据库负载均衡...
  5. cassandra 入门_Apache Cassandra和Java入门(第二部分)
  6. 绿联怎么样_移动电源降价了,小米、京选、绿联充电宝怎么选,网友:都非常合适...
  7. IE浏览器整页截屏程序
  8. 腾讯优测-优社区干货精选 |安卓适配之Camera拍照时快门咔嚓声
  9. basys3利用microblaze连接Pmod ad2
  10. python安装使用pip安装numpy
  11. 推荐C语言编译器(手机APP)
  12. 细胞穿膜肽TAT/血管肽Angiopep/靶向多肽cRGD偶联TIO2二氧化钛纳米粒(TiO2-Angiopep)
  13. java 批量生成条形码,打包zip(springboot)
  14. js去掉url中的域名的方法
  15. Android系统原理及开发要点详解
  16. Matplotlib绘制图片——膨胀算法
  17. 网络舆情如何有效分析评估解决的方法措施
  18. 视觉SLAM学习路线
  19. 基于Python+django的 古诗词在线学习网站-计算机毕业设计
  20. 基于docker的influxdb时序数据库搭建

热门文章

  1. 奶瓶 linux内核,CDlinux专用inflator-打气筒(reaver的图形化,beini奶瓶作者编写)下载 - 无线安全新手入门 - 无线论坛...
  2. Docker设置端口映射
  3. 阿里巴巴重要开源项目汇总(转载)
  4. 股票 - - 常用指标【下】
  5. 【AI视野·今日CV 计算机视觉论文速览 第220期】Wed, 16 Jun 2021
  6. 专业词汇扫盲:MRR(Mean reciprocal rank) ,long-tail,link prediction
  7. php 队列创建,php 队列的实现方法
  8. php队列处理mysql_php队列处理:php消息队列实现原理(图文)
  9. SAP中销售订单中的条件类型修改控制问题配置分析
  10. AE导出透明背景gif