Laravel异步队列,选择Redis还是Redis?

原文来着 https://www.jianshu.com/p/16c92227076c

今天我在异步队列的选择上,犹豫了一下。

RabbitMQ

RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。

Redis

是一个Key-Value的NoSQL数据库,开发维护很活跃,虽然它是一个Key-Value数据库存储系统,但它本身支持MQ功能,所以完全可以当做一个轻量级的队列服务来使用。

因为RabbitMQ具有天然的发布订阅模式,而且还提供了其他模式,当然你也可以用RabbitMQ来做GRPC。但是Redis没有这个,需要自己实现,换句话来说就是当消费者消费失败的时候,消息体丢失,需要手动处理。

持久化

Redis:将整个Redis实例持久化到磁盘
RabbitMQ:队列,消息,都可以选择是否持久化

这样一些特点之后,我们可以得到一个应用场景就是

Redis:轻量级,高并发,延迟敏感
即时数据分析、秒杀计数器、缓存等

RabbitMQ:重量级,高并发,异步
批量数据异步处理、并行任务串行化,高负载任务的负载均衡等

比如异步的发送邮箱呀、浏览器的用户行为、等非主要主线任务,异步发送Socket消息 等 都可以交给RabbitMQ消息队列来处理。如果是主线业务流程的话,还是考虑使用Redis吧,性能高。

RabbitMQ+PHP 教程一 Hello World
这是一篇简单文章,没用过的同学可以先试着安装,可以当时没有业务支持,并没有使用。

现在有业务支持,使用的是laravel-queue-rabbitmq这个扩展包,可以参考以下文章。

Laravel5.6 整合 RabbitMQ 消息队列

注意:
运行php artisan queue:work rabbitmq后,他运行的地方是在cli中,所以你每次修改完,代码之后请务必要重新运行`php artisan queue:work rabbitmq
`
其他问题

RabbitMQ 怎么运行?

如果你不是java出身的同学,可能比较麻烦....
我们可以借用docker ,我们用的是rabbitmq:management,默认密码都为guest
运行两步曲

docker pull rabbitmq:management

docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq rabbitmq:management

然后浏览器可以通过IP:15672访问rabbitmq后台。

如果你的主程序在docker里面运行php填写的地址请填写你本机的IP,例如192.168.1.1而不是127.0.0.1

38 声望
4 粉丝
0 条评论
推荐阅读
使用Rxjs写前端异步流信息
准备工作 首先在 GitHub - teambition/learning-rxjs: Learning RxJS step by step clone 项目所需的 seed,本文中所有涉及到 RxJS 的代码将全部使用 TypeScript 编写。 使用 npm start 启动 seed 项目,在浏览器...

傻梦兽01阅读 1.3k

One 一个简洁的博客、微博客系统
代码:[链接]文档:[链接]系统预览首页:微博列表:微博详细:文章列表:文章详细:归档:搜索,目前只能依据分类、标签搜索😀:管理后台:

Eyeswap45阅读 2.3k评论 1

Laravel 配合 jwt 使用
测试使用的是Laravel5.5版本。安装 {代码...} 配置生成配置 {代码...} auth配置 {代码...} 编码控制器: {代码...} 路由:此处注意,我为了方便测试,使用了get方法,生产环境不建议使用get。 {代码...} 测试一下...

13sai1阅读 3k

Laravel常用代码合集
用Laravel也有不短的时间了,也用过不少版本了,以下代码是在日常项目中收集,作为笔记,也分享出来,希望对你有点用处。注:版本没标注,若有不兼容的问题,微调即可。

13sai1阅读 1.4k

「Goravel 上新」同时支持 Local, OSS, COS, S3的文件储存模块,还支持自定义,想存哪里存哪里!
对于一些同学熟悉的味道扑面而来,对于另一些同学使用体验相当丝滑。 {代码...} 关于 GoravelGoravel 是一个功能完备、具有良好扩展能力的 Web 应用程序框架。作为一个起始脚手架帮助 Golang 开发者快速构建自己...

韩同学的简单逻辑阅读 1.2k

封面图
【PHP】Largon 快速部署 Laravel 项目
引言phpLargon部署Laravel非常简单,只要对于PHP的一些组件进行相关了解即可。Largon的bin组件介绍Apache:老牌Web服务器Cmder:命令行工具(Windows下的终端模拟器)Composer:PHP 包管理器Git:分布式版本控制...

Xander阅读 844

「Goravel 上新」用户授权模块,让你简单的对非法用户 Say No!
首先,让我们定义一个规则:用户只能访问自己创建的文章。 {代码...} 然后判断单个权限: {代码...} 你也可以同时判断多个权限: {代码...} 你甚至可以定义 Before 与 After 进行授权前后的拦截,详见文档。Over,...

韩同学的简单逻辑阅读 814

封面图
38 声望
4 粉丝
宣传栏