美文网首页
队列日记

队列日记

作者: 土豆丝呢 | 来源:发表于2018-06-29 22:27 被阅读0次

消息队列的主要特点是异步处理,主要目的是减少请求响应时间和解耦。所以主要的使用场景就是将比较耗时而且不需要即时(同步)返回结果的操作作为消息放入消息队列。同时由于使用了消息队列,只要保证消息格式不变,消息的发送方和接收方并不需要彼此联系,也不需要受对方的影响,即解耦和。

解耦:生成 Slug 只是一个优化功能(不需要即时返回结果),并非是发帖的必要功能(需要即时返回结果),我们希望无论生成 Slug 的结果如何,用户都能顺利的发帖,并且完全察觉不到延迟。

减少请求响应时间:利用队列系统可以做到这点。队列允许你异步执行消耗时间的任务,比如请求百度翻译API。这样可以有效的降低请求响应的时间。


 composer require "predis/predis:~1.0"

QUEUE_DRIVER=redis(修改env,默认SYNC)

php artisan queue:failed-table(生成任务失败的迁移表)

$ php artisan migrate(执行迁移)

php artisan make:job namejob(生成任务队列类,app/Jobs,注入模型,要执行的方法)

利用模型监控实现任务分发dispatch(new namejob($topic));

任务队列监控:

composer require "laravel/horizon:~1.0"

php artisan vendor:publish --provider="Laravel\Horizon\HorizonServiceProvider"

开启监控php artisan horizon

线上部署须知

在开发环境中,我们为了测试方便,直接在命令行里调用 artisan horizon 进行队列监控。然而在生产环境中,我们需要配置一个进程管理工具来监控 artisan horizon 命令的执行,以便在其意外退出时自动重启。当服务器部署新代码时,需要终止当前 Horizon 主进程,然后通过进程管理工具来重启,从而使用最新的代码。

1,简而言之,生产环境下使用队列需要注意以下两个问题:

2,使用 Supervisor 进程工具进行管理,配置和使用请参照 文档 进行配置;

每一次部署代码时,需 artisan horizon:terminate 然后再 artisan horizon 重新加载代码。

相关文章

  • 队列日记

    消息队列的主要特点是异步处理,主要目的是减少请求响应时间和解耦。所以主要的使用场景就是将比较耗时而且不需要即时(同...

  • 雄鹰少年第二期 第二天

    上午:队列训练、战术手语 下午:风筝轧制、英语测试 晚上:写日记、爱国主义教育 铸朗这宝贝在队列训练中有小动作,内...

  • 开发日记(02) - js 异步任务队列

    开发日记(02) - js 异步任务队列 2021-01-31 20:40:22 0️⃣ 问题 ❓ 算是之前项目遗...

  • 队列

    队列特性 对比队列和栈 基于数组的队列 对比队列学习循环队列 循环队列难点 阻塞队列 并发队列 应用:线程池中拒绝...

  • 队列

    文章结构 什么是队列 实现队列顺序队列链式队列循环队列 Java中的队列 1. 什么是队列 队列也是一种操作受限的...

  • iOS底层-- GCD源码分析(1)-- dispatch_qu

    手动目录认识队列队列的结构队列的产生主队列全局队列创建的队列管理队列 代码版本dispatch version :...

  • 队列,异步,同步,线程通俗理解

    一、队列 串行队列 并行队列 主队列(只在主线程执行的串行队列) 全局队列(系统的并行队列) 二、 任务(是否具有...

  • GCD基础总结一

    上代码~ 同步串行队列 同步并行队列 异步串行队列 异步并行队列 主队列同步 会卡住 主队列异步

  • OC多线程

    队列创建 线程与队列 队列线程间通信 队列组

  • GCD

    获得主队列 获得全局队列 串行队列 异步队列 同步队列 阻隔队列 (像栅栏一样 ) 例如 A -->栅栏 --...

网友评论

      本文标题:队列日记

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