Hyperf异步队列注解AsyncQueueMessage

23-02-12 15:43 字数 557 阅读 1876

官方文档的使用示例

<?php

declare(strict_types=1);

namespace App\Service;

use Hyperf\AsyncQueue\Annotation\AsyncQueueMessage;

class QueueService
{
    #[AsyncQueueMessage]
    public function example($params)
    {
        // 需要异步执行的代码逻辑
        // 这里的逻辑会在 ConsumerProcess 进程中执行
        var_dump($params);
    }
}

问题来了,代码逻辑中抛异常或错误会怎么样?

  1. 控制台没有错误信息,通过debug发现代码没有按预期执行完,原因也是奇奇怪怪的,比如我执行SQL,排查后发现orm的pdo连接对象是空的。
  2. 注意代码注释中的“在 ConsumerProcess 进程中执行”,队列是在独立进程中执行的,直接去掉注解,此时控制台打印了异常堆栈信息,开发调试环境让逻辑走通再加上注解。
  3. 跨进程、协程等,数据是隔离的,异常也是不能跨越捕获,在本进程、协程内捕获并记录日志。
  4. 最后安利一个swoole组件库,saber
1人点赞>
关注 收藏 改进 举报
0 条评论
排序方式 时间 投票
快来抢占一楼吧
请登录后发表评论