发布网友 发布时间:2024-10-24 11:21
共1个回答
热心网友 时间:1天前
在系统并发需求较高的业务场景下,为解决并发问题,消息队列成为一种有效的解决方案,用于异步处理业务。本文以取消订单业务为例(取消订单业务代码不涉及),重点介绍如何利用 Redis 的 rpush 和 blpop 命令实现消息队列。通过 rpush 命令将数据推送到 Redis 列表的尾部,随后利用 blpop 命令在阻塞模式下从列表的左侧获取数据(先进先出),这一过程在后端代码中实现,即消息队列的消费者。消费者函数 consume() 由定时任务每 5 分钟执行一次,执行时间限制在 290 秒后自动结束,以便定时任务下一轮调用。在配置文件 app/config/config.php 中设置队列驱动、队列方法和是否开启队列,队列驱动指定了队列存储方式。队列数据采用 JSON 格式存储于 Redis,消费时自动转换为数组。