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

RabbitMQ-消息队列延迟队列二

1、安装rabbitmq

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

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

mkdir vendor

3、进入文件

cd vendor

4、安装php扩展

composer require php-amqplib/php-amqplib

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

cd ../
mkdir delay

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

cd delay
touch delay_pub.php

7、输入delay生产者内容

<?phprequire_once  '../vendor/autoload.php';use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;
use PhpAmqpLib\Wire\AMQPTable;$v_host = 'order';$exc_name ='delay_exc_pay';
$routing_key = 'delay_route_pay';
$queue_name = 'delay_queue_pay';
$ttl = 20000;
$connection = new AMQPStreamConnection('localhost',5672,'wangyulong','wangyulong',$v_host);$channel = $connection->channel();$channel->exchange_declare($exc_name,'x-delayed-message',false,true,false);$args = new AMQPTable(['x-delayed-type'=>'direct']);$channel->queue_declare($queue_name,false,true,false,false,false,$args);$channel->queue_bind($queue_name,$exc_name,$routing_key);
$data = 'this is dead message';$arr = ['delivery_mode'=>AMQPMEssage::DELIVERY_MODE_PERSISTENT,'application_headers'=>new AMQPTable(['x-delay'=>$ttl])];$msg = new AMQPMessage($data,$arr);$channel->basic_publish($msg,$exc_name,$routing_key);$channel->close();$connection->close();

8、创建消费者php

touch delay_worker.php

9、输入delay消费者内容

<?phprequire_once  '../vendor/autoload.php';use PhpAmqpLib\Connection\AMQPStreamConnection;$v_host ='order';$exc_name ='delay_exc_pay';
$routing_key = 'delay_route_pay';
$queue_name = 'delay_queue_pay';$connection = new AMQPStreamConnection('localhost',5672,'wangyulong','wangyulong',$v_host);$channel = $connection->channel();$channel->exchange_declare($exc_name,'x-delayed-message',false,true,false);$channel->queue_bind($queue_name,$exc_name,$routing_key);$callback = function($msg){echo 'received ' ,$msg->body,"\n";$msg->ack();
};$channel->basic_qos(null,1,null);$channel->basic_consume($queue_name,'',false,false,false,false,$callback);while($channel->is_open()){$channel->wait();
}$channel->close();$connection->close();

10、执行消费者

php delay_worker.php

11、执行生产者

php delay_pub.php
此时你会发现只有delay消费者并没有数据,而是退后2秒才有数据。这就是rabbitmq delay延迟队列工作模式硬实力
延迟队列需要提前添加交换机

http://www.mrgr.cn/news/1265.html

相关文章:

  • Leetcode每日刷题之209.长度最小的子数组(C++)
  • 【drools】8.44 例子ubuntu24.04 运行;IntelliJ 修复java: 错误: 不支持发行版本 5
  • 叉车里程表系统,统计车辆行驶里程,提升叉车使用效率!
  • C++:C/C++的内存管理
  • Linux下用vim打开超大文件方法
  • centOS和麒麟V10系统,mysql数据库移植
  • 8.18 day bug
  • 【分布式系统】关于主流的几款分布式链路追踪工具
  • C语言:for、while、do-while循环语句
  • 最小路径和[中等]
  • 十一、OpenCVSharp 中的图像的特征提取
  • Linux--传输层协议UDP
  • Linux服务器(CentOS)安装redis
  • 针对thinkphp站点的漏洞挖掘和经验分享
  • 常见的排序算法汇总(详解篇)
  • 基于WEB的旅游推荐系统设计与实现
  • Android 11强制App固定user_rotation方向显示
  • Kylin的工作原理及使用分享
  • Selenium与Web Scraping:自动化获取电影名称和评分的实战指南
  • 《工厂模式在软件开发中的深度剖析与应用》