美文网首页
队列知识

队列知识

作者: Amy1234567 | 来源:发表于2023-06-19 17:40 被阅读0次

什么是队列?

队列就是将耗时的任务延迟处理,以减少web请求和响应的时间。

Laravel队列为后台队列提供了统一的API。

什么是队列驱动?

即数据库驱动,redis驱动,Beanstalkd驱动等等。还有一个特殊的驱动:null队列驱动 -- 用于那些放弃队列的任务。

这些驱动的配置,都写在config/queue.php里。

redis队列怎么配置?

config/queue.php中配置redis驱动,config/database.php中配置redis连接信息。

怎么生成任务类?

php artisan make:job ProcessJob

任务类都保存在app/Jobs目录。任务类都会实现Illuminate\Contracts\Queue\ShouldQueue类,以告诉laravel,将任务推送给队列,而不是立即执行。

任务类的结构是什么?

任务类可以包含构造函数,通常只包含一个handle方法,在任务处理时被调用。

怎么分发任务到队列?

通过dispatch方法分发任务,dispatch方法的唯一参数就是任务实例:dispatch(new ProcessJob());

分发任务时,可以指定队列吗?

可以指定队列,也可以指定连接,并且可以在序列中执行队列

指定队列:dispatch(new ProcessJob())->onQueue('processing);

指定连接:dispatch(new ProcessJob())->onConnection('sqs');

任务链:ProcessJob::withChain([new OptimizePodcast,new ReleasePodcast])->dispatch();

还可以延时分发队列:dispatch(new ProcessJob())->delay(now()->addMinutes(10)); //10分钟之后执行

指定最大失败次数和超时时间有几种方法?

指定最大失败次数有三种方法,指定超时时间有两种方法。

指定最大失败次数:

方法一:用artisan命令:php artisan queue:work --tries=3

方法二:定义在任务类中:public $tries=5;  //优先级高于artisan命令

方法三:在任务类中添加retryUtil方法, 表示在指定时间内允许任务的最大尝试次数。

public function retryUtil(){

    return now()->addSeconds(5);

}

指定超时时间:

方法一:用artisan命令:php artisan queue:work --timeout=30 //最大运行时间30秒

方法二:在任务类中定义超时时间:public $timeout=120;   //单位(秒)。优先级高于命令行定义的时间

任务异常时怎么处理?

如果任务在处理过程中有异常抛出,会自动释放回队列,以便再次尝试执行。任务会持续被释放,直到尝试次数达到应用允许的最大次数。

怎么运行队列进程?

Laravel自带了一个队列进程,用来处理被推动到队列中的任务。

运行队列进程的命令:php artisan queue:work

队列进程开始运行后,会持续监听队列,直到手动停止或关闭终端。

队列进程是长生命周期的进程,在启动后会驻留内存。如果应用有改动,是不会影响进程的,要重启队列进程。

supervisor是什么?

supervisor是linux系统中常用的进程守护程序。如果队列进程queue:work意外关闭,它会重新启动队列进程。

相关文章

  • GCD串行并发队列

    学习完本篇,您会对以下知识点更加理解: 队列 串行队列 并发队列 GCD全局队列 GCD主队列 创建串行队列 创建...

  • 【 数据结构 & 算法 】—— 栈、队列、堆

    < 思维导图 > 预备知识:STL stack(堆) 预备知识:STL queue(队列) 使用队列实现栈(栈、队...

  • iOS多线程整理 (精)

    知识点梳理 1.线程进程的区别: 2.队列种类: 串行队列、并发队列、主队列(有经过特殊处理的串行队列)、全局队列...

  • 栈 队列 双端队列 优先队列 基础知识

    栈 队列 双端队列 优先队列 基础知识• Stack:先入后出 first in last out 简写FILO ...

  • Select & Epoll原理

    预备知识 等待队列 等待队列有一个等待队列头,其他加入这个等待队列的需要加在这个头上。 需要加入等待队列的话,可以...

  • GCD一些应用的知识点

    本篇各种零散的点,是自己在看教学视频时整理的知识点。 GCD队列 主队列 串行队列 并行队列 在串行队列里disp...

  • C语言数据结构——线性表链式循环队列(链表实现方式)

    队列相关知识及操作请参看上一章 C语言数据结构——线性表循环队列(动态数组实现方式) 一、链式队列 链式队列 : ...

  • 面试题9:用两个栈实现队列

    题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 知识点 栈,队列 ...

  • GCD编程

    今天谈论gcd编程的相关知识,gcd编程应该包涵的知识点有:g c d串行队列和并发队列,g c d的延时,线程组...

  • RabbitMQ总结

    RabbitMQ总结 基础知识 为什么要用消息队列 队列是一种先进先出的数据结构。 消息队列是分布式系统中重要的组...

网友评论

      本文标题:队列知识

      本文链接:https://www.haomeiwen.com/subject/knyeydtx.html