当前位置: 首页 > news >正文

RabbitMQ-消息队列延迟队列一

1、安装rabbitmq

怎么安装rabbitmq请查看之前课程,如果已经安装,请略过此步。

2、创建vendor文件夹或是直接采用PHP框架

mkdir vendor

3、进入文件

cd vendor

4、安装php扩展

composer require php-amqplib/php-amqplib

5、进入上级创建dead文件夹

cd ../
mkdir dead

6、进入dead文件并创建生产者php

cd dead
touch dead_pub.php

7、输入dead生产者内容

<?phprequire_once  '../vendor/autoload.php';use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;
use PhpAmqpLib\Wire\AMQPTable;$v_host = 'order';$exc_name ='exc_pay';
$routing_key = 'route_pay';
$queue_name = 'queue_pay';
$ttl = 20000;$dead_exc_name = 'dead_exc_pay';
$dead_routing_key = 'dead_route_pay';
$dead_queue_name = 'dead_queue_pay';$connection = new AMQPStreamConnection('localhost',5672,'wangyulong','wangyulong',$v_host);$channel = $connection->channel();$channel->exchange_declare($exc_name,'direct',false,false,false);$args = new AMQPTable(['x-message-ttl'=>$ttl,'x-dead-letter-exchange'=>$dead_exc_name,'x-dead-letter-routing-key'=>$dead_routing_key]);$channel->queue_declare($queue_name,false,true,false,false,false,$args);$channel->queue_bind($queue_name,$exc_name,$routing_key);//声明死信交换器  队列$channel->exchange_declare($dead_exc_name,'direct',false,false,false);$channel->queue_declare($dead_queue_name,false,true,false,false);$channel->queue_bind($dead_queue_name,$dead_exc_name ,$dead_routing_key);$data = 'this is dead message';$msg = new AMQPMessage($data,['delivery_mode'=>AMQPMEssage::DELIVERY_MODE_PERSISTENT]);$channel->basic_publish($msg,$exc_name,$routing_key);$channel->close();$connection->close();

8、创建消费者php

touch dead_worker.php

9、输入dead消费者内容

<?phprequire_once  '../vendor/autoload.php';use PhpAmqpLib\Connection\AMQPStreamConnection;$v_host ='order';$dead_exc_name = 'dead_exc_pay';
$dead_routing_key = 'dead_route_pay';
$dead_queue_name = 'dead_queue_pay';$connection = new AMQPStreamConnection('localhost',5672,'wangyulong','wangyulong',$v_host);$channel = $connection->channel();$channel->exchange_declare($dead_exc_name,'direct',false,false,false);$channel->queue_bind($dead_queue_name,$dead_exc_name,$dead_routing_key);$callback = function($msg){echo 'received ' ,$msg->body,"\n";$msg->ack();
};$channel->basic_qos(null,1,null);$channel->basic_consume($dead_queue_name,'',false,false,false,false,$callback);while($channel->is_open()){$channel->wait();
}$channel->close();$connection->close();

10、执行消费者

php dead_worker.php

11、执行生产者

php dead_pub.php
此时你会发现只有dead消费者并没有数据,而是退后2秒才有数据。这就是rabbitmq dead延迟队列工作模式硬实力

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Dockerfile搭建LNMP
  • Linux安装jdk8,tomcat和mysql
  • 【layUI】只能选某个特定区间的日历
  • 24/8/18算法笔记 目标导向强化学习
  • 【C++】C++11新增特性
  • Fabric:关于链码的编写及部署的问题记录
  • 在CodeBlocks搭建SDL2工程OLED液晶模拟器虚拟OLED单色液晶(128x64)
  • 使用MongoDB构建AI:Story Tools Studio将生成式AI引入Myth Maker AI游戏
  • vue中点击导航栏,动态改变样式,经典写法
  • Linux网络:基于OS的网络架构
  • 【Kubernetes】k8s集群图形化管理工具之rancher
  • SourceTree远端!无法获取代码
  • 6. 数据结构—串的匹配算法
  • SpringBoot教程(二十二) | SpringBoot实现分布式定时任务之elastic-job
  • PMP到底有什么用?
  • 2019.2.20 c++ 知识梳理
  • Apache的80端口被占用以及访问时报错403
  • Create React App 使用
  • Date型的使用
  • Git同步原始仓库到Fork仓库中
  • HTML中设置input等文本框为不可操作
  • If…else
  • js ES6 求数组的交集,并集,还有差集
  • Service Worker
  • spring-boot List转Page
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • Vue组件定义
  • 翻译:Hystrix - How To Use
  • 今年的LC3大会没了?
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 项目管理碎碎念系列之一:干系人管理
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​虚拟化系列介绍(十)
  • ​一些不规范的GTID使用场景
  • #mysql 8.0 踩坑日记
  • #QT项目实战(天气预报)
  • #职场发展#其他
  • (1)Nginx简介和安装教程
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (STM32笔记)九、RCC时钟树与时钟 第二部分
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (二) 初入MySQL 【数据库管理】
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (回溯) LeetCode 78. 子集
  • (简单) HDU 2612 Find a way,BFS。
  • (论文阅读11/100)Fast R-CNN
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (四)stm32之通信协议
  • (算法)区间调度问题
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (转)原始图像数据和PDF中的图像数据
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统