那么什么时候需要用延时队列呢?考虑一下以下场景:
- 订单在十分钟之内未支付则自动取消。
- 新创建的店铺,如果在十天内都没有上传过商品,则自动发送消息提醒。
- 用户注册成功10分钟后发送邮件。
- 账单在一周内未支付,则自动结算。
- 用户发起退款,如果三天内没有得到处理则通知相关运营人员。
- 预定会议后,需要在预定的时间点前十分钟通知各个与会人员参加会议。
- 需要安装rabbitmq
- 为了方便安装,我们选择docker的方式安装rabbitmq。如果没安装docker请参考:安装docker
- 拉取镜像
docker pull rabbitmq:3.7.7-management
- 查看镜像id
sudo docker images
- 启动容器 (需要将最后的镜像id 2888deb59dfc 替换成你自己的id)
docker run -d --name rabbitmq3.7.7 -p 5672:5672 -p 15672:15672 -v `pwd`/data:/var/lib/rabbitmq --hostname myRabbit -e RABBITMQ_DEFAULT_VHOST=/ -e RABBITMQ_DEFAULT_USER=gust -e RABBITMQ_DEFAULT_PASS=gust 2888deb59dfc
说明:
-d 后台运行容器;
--name 指定容器名;
-p 指定服务运行的端口(5672:应用访问端口;15672:控制台Web端口号);
-v 映射目录或文件;
--hostname 主机名(RabbitMQ的一个重要注意事项是它根据所谓的 “节点名称” 存储数据,默认为主机名);
-e 指定环境变量;(RABBITMQ_DEFAULT_VHOST:默认虚拟机名;RABBITMQ_DEFAULT_USER:默认的用户名;RABBITMQ_DEFAULT_PASS:默认用户名的密码)
sudo docker ps -a
访问 http://Server-IP:15672 帐号gust 密码gust
php addMessage.php 或者浏览器访问
- 消费延迟队列消息
php consumeDelayQueue.php
- 消费普通队列消息
php consumeQueue.php
参考